On 2015-03-27 05:34:59 +0000, zhmt said:
On Friday, 27 March 2015 at 04:13:01 UTC, deadalnix wrote:
On Friday, 27 March 2015 at 03:59:30 UTC, zhmt wrote:
The best way to do that is to separate the server modules into
independent processes. Then if one crashes, the others keep running
without fear of corruption.
So instead of server modules, try doing mini servers that communicate
with the main server. This is how a lot of newer programs are written
because of the reliability and security benefits it offers.
But this will make the developement more difficult for me, or not acceptable.
Is there any other ways?
http://www.deadalnix.me/2012/03/24/get-an-exception-from-a-segfault-on-linux-x86-and-x86_64-using-some-black-magic/
There is a hook in the runtime to enable this if you want.
BUT, null pointer exception or not, Adam is right. Have your stuff run
in multiple process that you can restart. This is more reliable, this
is more secure, this is easier to update without downtime, and so on...
This is far superior solution for server stuff.
multi-process means crashes are isolated by process, but isolated by
thread may be more handy.
For example , this feature is suported by java c# lua, ie.
This can make dlang app developed by most developers more reliable.
All the languages you mention run in a VM. In the case of a systems
language like D, the operation system itself is intercepting the
reference to invalid memory and sending a SIGSEG to the process. The
default handler causes the process to immediately terminate. Having
the D runtime do something different in the SIGSEG handler by default
would be bad form.
-Shammah