On 17 March 2014 18:13, Demetri <supernova200...@yahoo.com> wrote: > I wrote a small D program. When compiled with DMD, it works fine, but > neither GDC nor LDC2 can catch exceptions thrown from Phobos (proven by > GDB). How do I fix this? > > Example code: > > import std.process; > void main(){ > try > { > spawnProcess(["/dev/null"]); > } > catch (Throwable p) > { > return; > } > } > > which dies with SIGABRT when compiled and executed, even though the catch > block should catch the ProcessException. > > Compiler: ldc2 based on LLVM 3.3 and DMD 2.063.2 (invoked via ldmd2 -O > -inline -release), but also happens with gdc 4.8.2 (invoked via gdmd -O > -inline -release). The execption is caught when I use dmd -O -inline > -release to compile, even when I only catch ProcessException and not > Throwable.
SIGABRT is normally a sign of an assert(false) in release code in GDC. Try running a backtrace on the application.