Hi -

I'm using my newly enhanced rpctrace to hunt down a few bugs.

Here's a minor one in glibc that shows up like this on "rpctrace /bin/true":

task337(pid1240)->mach_port_deallocate (pn{  0}) = 0xf ((os/kern) invalid
name)

The trick is to get rpctrace to halt the process when it encounters
something like that, then gdb shows you right where the problem is.  I
haven't worked that up into a publishable patch, yet...

    agape
    brent
--- sysdeps/mach/hurd/dl-sysdep.c~	2016-08-08 12:55:47.000000000 -1000
+++ sysdeps/mach/hurd/dl-sysdep.c	2016-10-30 17:25:06.564622626 -1000
@@ -472,7 +472,8 @@
       err = __io_map ((mach_port_t) fd, &memobj_rd, &memobj_wr);
       if (err)
 	return __hurd_fail (err), MAP_FAILED;
-      __mach_port_deallocate (__mach_task_self (), memobj_wr);
+      if (memobj_wr != MACH_PORT_NULL)
+	__mach_port_deallocate (__mach_task_self (), memobj_wr);
     }
 
   mapaddr = (vm_address_t) addr;

Reply via email to