@koakuma have you tried running it non-single-step but one thread at a time? Iirc scheduler-locking is the keyword to look for and that will obviously require some manual action when the thread you are running starts to wait on some other thread (e.g. break on futex(FUTEX_WAIT) and then manually switch to some other thread that's not doing that)
@koakuma unless I totally forgot how scheduler-locking works this narrows down everything to one kind of race condition: where you need some other thread to take action early enough or the main thread dies. (Iirc doing what you've done means that only the main thread runs.)
@koakuma wait, it doesn't crash with scheduler locking and breakpoint set? That shouldn't make any difference, so if so I'm wrong somewhere and I don't know where.
@robryk It's more like that scheduler-locking does not make any difference at all
Only setting breakpoints work
@koakuma hm~ so it might be broken/broken for early enough stuff on sparc64. (Or I'm wrong about how it works.)
/me goes to read docs
Documentation claims that I recall correctly how it works but also says that it does so "on some OSes" and doesn't say what happens on other OSes: https://sourceware.org/gdb/current/onlinedocs/gdb.html/All_002dStop-Mode.html
So I guess it can quietly not work?
@robryk With scheduler-locking set to on, I don't see any difference (crashes if breakpoint is not set)