Closed zorael closed 1 year ago
The Onliners and Counter plugins are also affected, since they also peek
plugin commands to ensure no oneliners or counters are created that collide with an existing command.
Worked around in 4cd3fe0c5be253a57c12bfb0183ec025f1e07ff3.
The new approach doesn't go through concurrency messages, which seemed to be common factor that made all other workarounds fail.
The immediate workaround is unfortunately to just not use dmd for optimised builds. ldc and gdc are much better at optimising anyway, so they are in all aspects the better choice.
Occurs when you invoke Admin's
get
andset
commands, as well as Help'shelp
, when the program was compiled with dmd's optimisations. Common to all three is that they send delegates to the main thread which includes closures of the arguments passed to the functions they were nested in. When these delegates are called (inmain.d
:messageFiber
), the program invariably segfaults. Attempts to modify the code merely makes it segfault earlier in the callstack.Example from a call to
get
:Example from a call to
help
: