Hello, Brent W. Baccala, on Wed 30 Nov 2016 22:47:09 -1000, wrote: > The patch works, but is incomplete. Samuel's test programs attempt to access > unmapped memory addresses, which generate KERN_MEMORY_FAILURE, but ext2fs > attempts to access mapped addresses back by a memory manager returning faults, > which generates KERN_MEMORY_ERROR, so we also need this: > > --- sysdeps/mach/hurd/i386/exc2signal.c~ 2016-11-09 20:03:52.000000000 -1000 > +++ sysdeps/mach/hurd/i386/exc2signal.c 2016-11-30 01:54:02.000000000 -1000 > @@ -40,6 +40,7 @@ > { > case KERN_INVALID_ADDRESS: > case KERN_MEMORY_FAILURE: > + case KERN_MEMORY_ERROR: > *signo = SIGSEGV; > detail->code = posix ? SEGV_MAPERR : detail->exc_subcode; > break;
Err, I'm sorry, did you perhaps miss the fix I made after: commit 406b031c996ec4cd8c76d251de8b7bf462d8b975 Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> Date: Sun Nov 20 16:16:24 2016 +0100 Fix SIGBUS code diff --git a/sysdeps/mach/hurd/i386/exc2signal.c b/sysdeps/mach/hurd/i386/exc2signal.c index b2606c4..feb9e2d 100644 --- a/sysdeps/mach/hurd/i386/exc2signal.c +++ b/sysdeps/mach/hurd/i386/exc2signal.c @@ -52,7 +52,7 @@ exception2signal (struct hurd_signal_detail *detail, int *signo, int posix) default: *signo = SIGBUS; - detail->code = 0; + detail->code = posix ? BUS_ADRERR : detail->exc_subcode; break; } detail->error = detail->exc_code; Which should be making the fix you propose obsolete, since all errors will just map to SIGBUS with the proper address in code. Samuel