Drivers have problem about locking. For example, CGI::Session::Driver::file locks file by flock. It's OK. But, driver unlocks a file immediately after that reads a file. Now, other processes can access a file. CGI::Session just only read a file. CGI::Session will edit data and return data to a file. However, other processes may have done something. I think. The driver must continue having File-Handle after the driver locks a file. It must not unlock(close) it. While the driver object exists, the file continues being locked by keeping File-Handle. CGI::Session edit and save file safely. And, CGI::Session object is gone. Then the driver object is gone too. And the file is unlocked. It is necessary for mysql and the other drivers to continue having the lock of the record too.