The child processes might be closing the parent's database handle. Look at the InactiveDestroy attribute in the DBI docs. This should be set to true in the child processes (after forking) for the parent db handle. Or, if possible, you should only connect the parent db handle after the forking is done.
And just to be sure, the child processes get their own db handle after forking, right?