On Tuesday, 1 October 2013 at 19:55:17 UTC, monarch_dodra wrote:
On Tuesday, 1 October 2013 at 03:58:04 UTC, Nick Sabalausky
wrote:
You know, this sounds like something that really should fall
squarely in
the category of "do the right thing by default". Is there any
reason
druntime can't be made to handle this better by default?
Well, arguably, a segfault is a catastrophic error, even more
serious than an assert.
In linux assert(0) causes a segfault. And the fact that detected
by OS memory error is sigfault at linux and exception on windows
really hurts portability.
I'm not sure what "the right thing" would even be, apart from
dying right there and then...?
Even just throwing an error could be problematic (AFAIK).
Druntime can catch SIGINT and throw the exception. This means
that D runtime can be easily broken by silly C code which uses
its own signal handlers. I didn't tested, but believe this is
already the case with respect to SIGUSR1 and SIGUSR2 which are
used by druntime, so any simple code hijacking the signals can
break runtime. Linux signals handlers as error mechanism is a
complete disaster.