[Issue 15573] mystery crashes in @safe code

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Tue Jan 19 15:43:40 PST 2016


https://issues.dlang.org/show_bug.cgi?id=15573

hsteoh at quickfur.ath.cx changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hsteoh at quickfur.ath.cx

--- Comment #4 from hsteoh at quickfur.ath.cx ---
Exit code -8 seems to be SIGFPE (floating point exception). Exit code -11 is
your usual segmentation fault, usually the result of dereferencing an illegal
pointer (usually null, but can be other things like random int values
accidentally overwriting a pointer). Exit code -4 is, as it says, illegal
instruction, usually the result of a corrupted function pointer. You can see
the full list of signal numbers by running `kill -l` in a terminal.

Anyway, I've been trying to compile your code with various flags, but I could
not reproduce any of the errors you're seeing. Do you know exactly what's the
command line dub uses to invoke dmd (I don't have dub installed)?  I tried
various combinations like:

dmd -unittest test.d
dmd -release test.d
dmd -debug test.d
dmd -release -noboundscheck test.d
...
etc., and running the resulting executable afterwards, but none of them give
any of the consistency errors or crashes that you're seeing. I'm also running
on Linux/x86_64.

Based on the nature of your crashes, I'm suspecting that it has something to do
with linker problems... perhaps dub is somehow picking up an incorrect version
of a shared library (probably druntime or phobos), so the runtime functions
used by the program aren't doing what they're expected to do, causing various
memory corruption issues that lead to consistency errors and crashes.  You
might want to try a fresh installation of the dmd toolchain in a sandbox (in a
VM or a chroot, perhaps) and see if that makes a difference.

Failing that, try looking at the output of 'dmd -v test.d' and carefully check
the output to see if it's pulling in imports and shared libraries that are in
the expected places.

--


More information about the Digitalmars-d-bugs mailing list