Hi Yuri, On Sat, Oct 11, 2008 at 05:41:09PM -0700, Yuri wrote: > Is there a way to access from signal handler CPU registers as they > were before signal, modify some of them, clear the signal and > continue from the instruction that caused SEGV initially?
Maybe you can have a look to the development version of the Enlightenment window manager [1]. It catches segfaults and displayed a window to ask the user what to do (continue, abort). I experienced a few crashes where this helpful window was triggered a dozen times, I asked the window manager to continue and could save my work before everything crashed. First moves in the svn repository [2] (basically grep SEGV): | ./src/bin/e_exec.c:456: else if (cfdata->event.exit_signal == SIGSEGV) | ./src/bin/e_desklock.c:689: sigaction(SIGSEGV, &action, NULL); | ./src/bin/e_object.c:153: sigaction(SIGSEGV, &act, &oact); | ./src/bin/e_object.c:158: sigaction(SIGSEGV, &oact, NULL); | ./src/bin/e_object.c:168: sigaction(SIGSEGV, &oact, NULL); | ./src/bin/e_signals.c:28: e_alert_show("This is very bad. Enlightenment SEGV'd.\n" | ./src/bin/e_signals.c:48: e_alert_show("This is very bad. Enlightenment SEGV'd.\n" | ./src/bin/e_main.c:99: sigaction(SIGSEGV, &action, NULL); | ./src/bin/e_main.c:322:// FIXME: SEGV's on shutdown if fm2 windows up - disable for now. Hope that helps! Romain References: 1. http://enlightenment.org/ 2. http://svn.enlightenment.org/svn/e/trunk/e/ -- Romain Tartière <[EMAIL PROTECTED]> http://romain.blogreen.org/ pgp: 8DAB A124 0DA4 7024 F82A E748 D8E9 A33F FF56 FF43 (ID: 0xFF56FF43) (plain text =non-HTML= PGP/GPG encrypted/signed e-mail much appreciated)
pgpVxJ2QWDAt9.pgp
Description: PGP signature