HackerTrans
TopNewTrendsCommentsPastAskShowJobs

aoli-al

no profile record

Submissions

A system programmer's guide to LLM inference

blog.xiangpeng.systems
3 points·by aoli-al·เดือนที่แล้ว·0 comments

Deterministic Simulation Testing for Distributed Systems: Good, Bad, and Ugly

aoli.al
2 points·by aoli-al·เดือนที่แล้ว·0 comments

Spaghetti Bench: Evaluating AI Agents on Concurrency Bug Fixes

pastalab.org
2 points·by aoli-al·5 เดือนที่ผ่านมา·0 comments

Asterinas NixOS

asterinas.github.io
2 points·by aoli-al·7 เดือนที่ผ่านมา·0 comments

The Steam client is now 64-bit on Windows 11 and Windows 10 64-bit

store.steampowered.com
24 points·by aoli-al·8 เดือนที่ผ่านมา·7 comments

Academic Arbitrage in the LLM Era

c.mov
1 points·by aoli-al·8 เดือนที่ผ่านมา·0 comments

Can a Data Race Happen on a Single-Core Machine?

aoli.al
3 points·by aoli-al·10 เดือนที่ผ่านมา·0 comments

Linus still uses an RX580 and ditches Apple Silicon for an Intel laptop

tomshardware.com
6 points·by aoli-al·12 เดือนที่ผ่านมา·0 comments

Discovering a JDK Race Condition, and Debugging It in 30 Minutes with Fray

aoli.al
157 points·by aoli-al·ปีที่แล้ว·52 comments

Does Functional Package Management Enable Reproducible Builds at Scale? Yes. [pdf]

arxiv.org
1 points·by aoli-al·ปีที่แล้ว·0 comments

Shaping AI's Impact on Billions of Lives

shapingai.com
2 points·by aoli-al·ปีที่แล้ว·0 comments

Build your own S3-Select in 400 lines of Rust – DataFusion is ALL YOU NEED

blog.xiangpeng.systems
4 points·by aoli-al·ปีที่แล้ว·0 comments

Parquet Pruning in DataFusion: Read Only What Matters

datafusion.apache.org
3 points·by aoli-al·ปีที่แล้ว·0 comments

Don't Make Things Work

maxwellforbes.com
3 points·by aoli-al·ปีที่แล้ว·0 comments

Efficient Filter Pushdown in Parquet

blog.xiangpeng.systems
2 points·by aoli-al·ปีที่แล้ว·0 comments

Evil Scheduler: Mastering Concurrency Through Interactive Debugging

aoli.al
2 points·by aoli-al·ปีที่แล้ว·0 comments

Chrome Returns 206 when the Server Returns 403

aoli.al
128 points·by aoli-al·ปีที่แล้ว·41 comments

Concurrency bugs in Lucene: How to fix optimistic concurrency failures

elastic.co
60 points·by aoli-al·ปีที่แล้ว·15 comments

Show HN: Fray: A controlled concurrency testing framework for the JVM

github.com
4 points·by aoli-al·ปีที่แล้ว·1 comments

comments

aoli-al
·7 เดือนที่ผ่านมา·discuss
My biggest complaint about Java development is the state of LSP/DAP support. I’ve tried writing Java in VS Code, and the support is still very incomplete. There are two features I want the most: (1) automatically downloading source code for dependencies, and (2) pausing all threads when a breakpoint is hit (https://github.com/microsoft/vscode-java-debug/issues/722 ).

I can’t find any editor or IDE that comes close to IntelliJ. If we want Java in the terminal, we may also need to think how to write Java in the terminal or are they orthogonal?
aoli-al
·8 เดือนที่ผ่านมา·discuss
It is hilarious to read the title: "I took all my projects off the cloud [...]" and then you click the link it says: "Webserver is down".
aoli-al
·ปีที่แล้ว·discuss
Yes, Fray controls all application threads so it runs one test per JVM. But you can always use multiple JVMs run multiple tests[1].

Fray currently does not support virtual threads. We do have an open issue tracking it, but it is low priority.

[1]: https://docs.gradle.org/current/userguide/java_testing.html#...
aoli-al
·ปีที่แล้ว·discuss
The "randomness" comes from Kotlin coroutines and user-space scheduling. For example, Kotlin runs multiple user-space threads on the same physical thread. Fray only reschedules physical threads. So when testing applications use coroutine/virtual threads, Fray cannot generate certain thread interleavings. Also, It cannot deterministically replay because the thread execution is no longer controlled by Fray.

In our paper, we found that Fray suffers from false negatives because of this missing feature. Lincheck supports Kotlin coroutines so it finds one more bug than Fray in LC-Bench.

We didn't make any claims about false positives in Lincheck.
aoli-al
·ปีที่แล้ว·discuss
should be fixed as well :)
aoli-al
·ปีที่แล้ว·discuss
Thanks for pointing it out! Just did a quick fix using Claude :)
aoli-al
·ปีที่แล้ว·discuss
https://github.com/cmu-pasta/fray

Is a concurrency testing framework for Java. It also does deterministic simulation.
aoli-al
·ปีที่แล้ว·discuss
https://github.com/cmu-pasta/fray

Fray is a controlled concurrency testing tool for the JVM that supports record and replay. It could be a perfect backend for codetracer. (I'm the author of Fray)
aoli-al
·ปีที่แล้ว·discuss
I'm the author of the post.

I'm not sure Chrome's current caching behavior is helpful because the second response does not indicate which part of the data is returned. So, the application has no choice but to discard the data.

But thank you for your comments. This helped me to crystalize why I think this is a bug.
aoli-al
·ปีที่แล้ว·discuss
AFAIK, Antithesis uses a hypervisor to achieve deterministic execution. This can be less effective because the hypervisor does not have language semantics and faces a larger search space. You may check Figures 5 and 6 in our technical report[1], where we compare Fray against RR, a record and replay tool that can also be used for concurrency testing at OS level[2].

[1]: https://arxiv.org/pdf/2501.12618

[2]: https://robert.ocallahan.org/2016/02/introducing-rr-chaos-mo...
aoli-al
·ปีที่แล้ว·discuss
Using Fray does not require knowledge about "deterministic testing" or "controlled concurrency." This is one of its goals: developers write normal concurrency tests, and Fray controls the execution behind the scenes.

In fact, when we evaluate Fray, we collect all existing concurrency tests from Lucene, Kafka, and Guava, and running them under different thread inter-leavings can already reveal so many bugs. [1]

[1]: https://github.com/cmu-pasta/fray/blob/main/docs/bugs.md
aoli-al
·ปีที่แล้ว·discuss
Fray does not know if a program is free of data races. Even if there are data races in a program, Fray can still find bugs, but this violates the soundness guarantee, so Fray may miss data race bugs.
aoli-al
·ปีที่แล้ว·discuss
This looks super cool!

It seems that all controlled threads are wrapped with `InterceptibleThread` in the Cassandra simulator. Does this work for ThreadPools (e.g., ForkJoinPool) as well? We had a hard time intercepting thread objects because they are used by the language runtime (e.g., GC threads) as well and we don’t want to interfere with them. Additionally, modifying application code just track thread creation isn’t ideal. To work around this, we came up with this combination of JVMTi and Java Agent solution and we use JVMTi to monitor thread creation and termination.

As for searching schedules, yes, it is hard to search all possible schedules. However, it turns out many searching algorithms such as probabilistic concurrency testing[1] or partial order sampling[2] are still better than random walk. So it is worth to give them a try.

[1] https://www.microsoft.com/en-us/research/wp-content/uploads/... [2] https://www.cs.columbia.edu/~junfeng/papers/pos-cav18.pdf
aoli-al
·ปีที่แล้ว·discuss
I’m the author of Fray, a concurrency testing framework for the JVM, and I’m excited to finally share what I’ve been building over the past few years!

Fray[1] is a concurrency testing tool for Java that can help you find and debug tricky race conditions that manifest as assertion violations, run-time exceptions, or deadlocks. I’d love to hear your thoughts—feel free to ask me anything! And if you’re curious, give Fray a try.

[1]: https://github.com/cmu-pasta/fray