I have experienced a similar problem at work (not in my
SCJD assignment). The problem was related to file-descriptors so I will have to ask you how you read the database file?
One single file object for all operations on the db-file?
Input streams, RAF?
Proper use of flush and close in finally?
Is it threadsafe? Try for example using only one client and see if the problem persists.
Is the crash random or does it always happen at the exact same line in your code?