3 ms·
The point is that this garbage collector is unsound. It may collect memory that is still in use. That's bad.
by reitblatt 15y ago
The point is that this garbage collector is unsound. It may collect memory that is still in use. That's bad.
- reitblatt 15y agoTo be clearer: safety is no longer compositional in this system. To safely use the Boehm garbage collector, it's not sufficient that my own code doesn't use "disguised" pointers: I have to verify that my libraries don't either. That's impractical and contrary to good software engineering at best, impossible at worst.
- rayiner 15y agoNo, you have to verify that your libraries don't keep disguised pointers to objects you allocated via the GC, that you don't yourself keep pointers to. It's quite unusual in C to give a reference to an object to another piece of code then drop all the pointers to it that you hold, because the usual discipline is that the module that allocates an object frees it.
- reitblatt 15y agoNot if you build the GC with --enable-redirect-malloc to use with existing libraries/code bases. Which should be fine because, after all, this is a "conservative" garbage collector. Right?