Jarrett Billingsley wrote: > On Fri, Jul 24, 2009 at 4:37 PM, Lutger<[email protected]> > wrote: >> There is a function setAssertHandler in druntime, but when I try to use >> it it segfaults. I'm not sure how it should be used, this is a complete >> example of what I try to do: >> >> import std.stdio; >> import core.exception; >> >> void handleAssertion(string file, size_t line, string msg = null) >> { >> writefln("assert in %s at line %s", file, line); >> }; >> >> static this() >> { >> setAssertHandler( &handleAssertion ); >> } >> >> unittest { assert(false); } >> >> void main() {} >> >> >> output: >> assert in test at line 16 >> Segmentation fault >> >> This is with dmd 2.031 on linux. Is this a bug, am I doing something >> wrong? > > Hm, it might - and I'm just taking a wild guess here - be that > std.stdio hasn't yet been initialized when you do the writefln in your > assertion handler. But you really should try using a debugger to get > a stacktrace.
Ok I tried. Funny thing, with -g enabled it doesn't segfault anymore. Without -g, the trace is not intelligible to me. Segfault also occurs when commenting out writefln. This is useless I assume but anyway, this is what gdb gives me: #0 0x0805292e in _TMP257 () #1 0x0000000e in ?? () #2 0xffffd02c in ?? () #3 0x08048f79 in _D4test11__unittest1FZv () Backtrace stopped: previous frame inner to this frame (corrupt stack?)
