io-net crashes on umount

What would cause io-net to crash on umount of my npm and ncm? My npm and
ncm are in the same shared library. When both are registered I can umount
either one (/dev/io-net/vmac0 or /dev/io-net/vmac_en) just fine, but when
only one remains mounted umounting it causes io-net to disappear with this
error:

umount /dev/io-net/vmac_en

umount(/dev/io-net/vmac_en) failed: No such process

I have nothing to do in a master shutdown function, but I put one in just
to see if it is called (by sending a notification to slog), and it is
indeed called. Furthermore, gdb on the core seems to indicate that my
shared library is no longer loaded by the time io-net has crashed.

I saw something in the newsgroup archives from about a year ago about
how the io_net_registrant_t variables are allocated maybe affecting this
but haven’t had success yet. Right now I statically declare them at the
file level (i.e. not in the function). I could dynamically allocate them
but then where would I delete them? Apparently deleting them even in
master shutdown would be too early.

I also read somewhere in the archives about a flag for io-net to tell its
resource manager to use a different path than /dev/io-net, for use when
running multiple instances of io-net. Does this still exist/exist yet?

Look at the addr where it died. If it’s where your dll
used to be, something still has a reference to your code
and it will have to be cleaned up in your shutdown func.

-seanb

Hans Fugal <fugalh@byu.edu> wrote:

What would cause io-net to crash on umount of my npm and ncm? My npm and
ncm are in the same shared library. When both are registered I can umount
either one (/dev/io-net/vmac0 or /dev/io-net/vmac_en) just fine, but when
only one remains mounted umounting it causes io-net to disappear with this
error:

umount /dev/io-net/vmac_en

umount(/dev/io-net/vmac_en) failed: No such process

I have nothing to do in a master shutdown function, but I put one in just
to see if it is called (by sending a notification to slog), and it is
indeed called. Furthermore, gdb on the core seems to indicate that my
shared library is no longer loaded by the time io-net has crashed.

I saw something in the newsgroup archives from about a year ago about
how the io_net_registrant_t variables are allocated maybe affecting this
but haven’t had success yet. Right now I statically declare them at the
file level (i.e. not in the function). I could dynamically allocate them
but then where would I delete them? Apparently deleting them even in
master shutdown would be too early.

I also read somewhere in the archives about a flag for io-net to tell its
resource manager to use a different path than /dev/io-net, for use when
running multiple instances of io-net. Does this still exist/exist yet?