(discussed task was picked from Poul-Henning Kamp's TODO list) Hackers, I've implemented abort2() system call. Works just like abort(3), but delivers signal reliably. Here is a prototype:
abort2(const char *why, int nargs, void **args); "why" is reason of program abort, "nargs" is number of arguments passed in "args". Both "why" and "args" (with "%p" format) will be printed via log(9). Sample output: [..] pid <3004> <abort2> abort2: ABORT2 <arg0:0x62612f2e> pid <3019> <abort2> abort2: invalid argument [..] I put two versions: one implemented as KLD so that more people can test it without a problem: http://freebsd.czest.pl/dunstan/FreeBSD/abort2/abort2-0.3.tgz ..and also as a patch: http://freebsd.czest.pl/dunstan/FreeBSD/abort2/diff.1.abort2-sycall If I miss some tests, please let me know, especially in user<->kernelspace interaction area. (currently I run patched kernel and couldn't get a panic in testing process). Short description - function: abort2(const char *why, int nargs, void **args); ..never returns. If improper arguments are used, instead of SIGABRT, SIGKILL is delivered. By improper arguments I understand: invalid pointers -- "why" or "args" or 0 > "nargs" > 16. Comments are welcome! -- * Wojciech A. Koszek && [EMAIL PROTECTED] _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"