Comment # 15 on bug 60929 from
r600g initializes LLVM without first setting the llvm::DisablePrettyStackTrace
variable to true. If this variable is false (the default), LLVM will register a
bunch of signal handlers, including for SIGXCPU and SIGPWR, both of which are
used by Mono's garbage collector.

gallivm correctly sets llvm::DisablePrettyStackTrace to true, but it runs after
r600g has already started calling into LLVM and the signal handlers have been
registered.

If you set a breakpoint on r600_create_context, manually set
llvm::DisablePrettyStackTrace to true and then continue, the application will
function correctly. I tested this using Fractal (a Unity game which deadlocks
in sem_wait on startup), Bastion (a MonoGame, also deadlocks in sem_wait), and
RepetierHost (an OpenTK app which dies in the SIGXCPU handler at startup).


You are receiving this mail because: