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.

Reply via email to