Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

When you open a file in Linux, you hold on to the reference of the underlying inode, which means if you load myLib 1.0, then update to myLib 1.0.1 using apt, then all the previously open programs will be stuck on the old version. This is a security issue at best, since unless you restart, there's no way of making sure nobody uses the old lib anymore, but more frequently a source of crashes and bugs, since myLib 1.0 and 1.0.1 might not be perfectly compatible. If I update Ubuntu, Chromium is almost 100% guaranteed to crash, (since the newly started processes use different lib versions), but I've seen other crashes as well.

In summary, I can't recommend you continue using your Linux machine after an update without a restart, since you are open to an entire category of weird bugs.



there are various tools that will tell you if you have old libraries in use by walking /proc

and the Chrome thing sounds rather strange as I thought Chrome forked processes from a "zygote" (a prototype process) rather than re-exec'ing() the binary (which should retain the handle to the deleted library inodes)

not to mention the shared library naming scheme should prevent this sort of incompatible change from occurring


In Windows you have to restart anyway, so your problem seems to be that you have a choice in Linux?


Both have updates in which you do or don't need to restart to apply them. Both also have methods of hotpatching all the way to the kernel level depending how much it's worth it to someone as well.


Windows handles not holding onto the inode is a major, MAJOR pain in the ass.

I hate the fucking "file is busy, try again?" dialog so fucking much.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: