Quinton Miller

Results 151 issues of Quinton Miller

This: Example code ```crystal spawn(name: "A1") do sleep end spawn(name: "B1") do spawn(name: "B2") do sleep end sleep end # C1 dies # C2 is orphaned spawn(name: "C1") do spawn(name:...

`FiberTrace` does not contain temporal information yet. Tracking this information allows one to measure whether a particular fiber takes up a lot of CPU time.

`MemProf`'s object counts and sizes work by intercepting `Reference.allocate`, so it misses `String` and `Log::Metadata` which allocate directly using `GC`'s methods. Support these types

`PerfTools::MemProf.running?` is true at process startup, so it tracks everything. The class property is not publicly documented; expose it and add an environment variable that turns its default value off,...

`MemProf.log_object_sizes` can be extremely slow if all the objects on the heap are highly interconnected, because running a BFS for every pointer must have at least quadratic time complexity. If...

If `-Dpreview_mt` (#2) is present, it is useful to know which threads the fibers are associated with, which can be used to diagnose concurrency issues. This can affect how `FiberTrace`'s...

Since `MEMPROF_PRINT_AT_EXIT` is realized as an `at_exit` handler, signals like SIGINT will not trigger the log. See crystal-lang/crystal#8687 Also `MemProf` used to crash if `running?` is true inside a signal...

Both `MemProf` and `FiberTrace` assume only one thread of execution, so they are not protected by synchronization primitives and will most likely break in `-Dpreview_mt`.

The delimited stack unwinder (`Exception::CallStack#unwind_to`) is only implemented for Linux, not for Windows nor the interpreter. Related: crystal-lang/crystal#13582

enhancement

LLVM codegen errors that occur after module validation could terminate the fibers spawned during program compilation, unless `--single-module` or `--threads=1` is also given. For example, if I intentionally use an...

kind:bug
topic:stdlib:concurrency
topic:compiler:codegen