I would advise against a design relying on a crash callback to save data. I do believe in mono (under linux only?) that you can hook into the sigkill/sigterm or something similar. However, it probably isn't very safe to do any amount of processing in those callbacks. I am also pretty sure that it isn't supported under .net/windows.
Regardless, relying on such a callback isn't safe enough. In the event where the hardware fails or power fails, your pc will shutdown and no hardware failure callback will be called. Even if there was, depending on which thread is executing that callback and depending on the OS/mono behavior when that happens, other threads might not get another chance to run, might have data store in IO buffers or on the stack that you will not be able to find, etc. For sensitive data, either use a DB with transactions or roll out a similar feature yourself: write everything to a journal/disk periodically with an optional coalescing/compressing step that you might run every day, twice a day, when a max size is reached, etc. Other than that, you just have to accept that not all data can be saved always :( Cheers, Nicholas On Sat, May 26, 2012 at 5:52 PM, xplicit <[email protected]> wrote: > I always run mono without --debug key, and memory is still leaking. I'll > collect heapshot info of the my latest build and will post info from it in a > day or two. > > There is much worse thing. After long working mono crashes with a dump. Once > or twice it told, that could not create thread (it's predictable that in my > app could be a sutiation, when max threads limit is reached, but why mono > drops in core and did not call AppDomain.CurrentDomain.UnhandledException?) > Sometimes it tells about segmentation fault (maybe this is related to high > fragmentation in GC). Sometimes mono drops into core without any human > readable cause. Several times I saw "timeout reached in the finalizer > thread". > > I have got some important data in the memory, which I want to save on the > crash of mono. Maybe mono has a some extension, which I can use to register > 'on crash' callback and save important data? > > -- > View this message in context: > http://mono.1490590.n4.nabble.com/Async-sockets-and-memory-leaks-in-BeginSend-tp4648844p4649559.html > Sent from the Mono - General mailing list archive at Nabble.com. > _______________________________________________ > Mono-list maillist - [email protected] > http://lists.ximian.com/mailman/listinfo/mono-list _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
