GDBM 1.11, 1.13 incorrectly handle gdbm_reorganize() if filesystem is NFS

Sebastian Gniazdowski <[email protected]> Tue, 20 Jun 2017 16:01:34 +0200
Newsgroups gmane.comp.gnu.utils.bugs
Message-ID <[email protected]>
Hello, 
I'm using new (not yet merged) gdbm Zsh module. It maps shell's hash table onto GDBM. Current Zsh upstream has previous version, but it behaves the same. 

If I don't comment-out gdbm_reorganize() call, then: 


% gdbmtool ./db.gdbm 

Welcome to the gdbm tool.  Type ? for help. 

gdbmtool> list 
stdin:1.5: cannot open database db.gdbm: Can't be writer 
gdbmtool> 


even after "unbind" done in Zsh. I've checked that the unbind correctly calls gdbm_close(). 

Commenting-out gdbm_reorganize() call fixes this. This is a proof that gdbm_close() is really called, 100% of problem lies in gdbm_reorganize(). 

So basically the error is: 

- with NFS file-system, gdbm_reorganize() harms GDBM_FILE structure so that gdbm_close() doesn't release the database, and it's impossible to connect to the database again, if no restart of shell. 

--  
Sebastian Gniazdowski
psprint /at/ zdharma.org