From: Christophe R. <cs...@ca...> - 2003-01-30 13:39:17
|
Hi, It turns out that SBCL doesn't like being linked against the current releases of SDL libraries, because these libraries clobber our signal handlers, by putting them back in handler, not action, mode (by which I mean the signal handler only receives one argument from the kernel, not the three that we require). This is obviously a bug in the library, and has been reported as such; on the other hand, since the user-visible symptom of this is a hard hang of the lisp environment, it might be better to give a reasonable diagnostic and exit cleanly. However, there's a problem with issuing this diagnostic. What I enviseage is something like (untested) void sigsegv_handler(int signum, siginfo_t *info, void *data) { if (info == NULL #if !(LISP_FEATURE_SPARC && LISP_FEATURE_LINUX) /* KLUDGE */ || data == NULL #endif ) lose("Someone has probably trashed our signal handlers."); ... } but, on the x86, this isn't going to work, because, as we have established through pain and suffering, SIGSTKSZ isn't enough stack space to call printf(). Any suggestions? Changing the sigaltstack stuff to use something like SIGSTKSZ*16 will probably work, but seems a trifle inelegant -- is there anything better? Cheers, Christophe -- http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757 (set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b))) (defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge) |