Problem with garbage in serialized CGI::Session files

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

We use PerlRun to run our site, which uses CGI::Session sessions,
the serialized session info is stored in /tmp.

Occasionally we get errors like this in our error log:
[Mon Sep 27 11:57:54 2004] [error] PerlRun: `syntax error at
(eval 20) line 1, near ";)"\n'

This happens when CGI::Session is running eval() on the contents
of the serialized session file, because when this happens we have
files that look like this (sorry for the mess):

$D = {"_SESSION_ID" => "307fdfadb1cc3be72a44d0c45fe793d9","_SESSION_ETIME" =>
1209600,"transport" => "BU","_SESSION_REMOTE_ADDR" => "",
"_SESSION_CTIME" => "1096272044","Booking" =>
( ... deleted a lot of lines ... )
["03"],"to1" => [""]}, 'CGI' )}, 'Booking' ),"_SESSION_ATIME" =>
"1096387975","_SESSION_EXPIRE_LIST" => {}};)}, 'Booking'
),"_SESSION_ATIME" => "1096387975","_SESSION_EXPIRE_LIST" => {}};

In the next to last line, notice the ';)'. The ; is where the information
ends; up to there the string parses correctly, and contains all the info
that should be there. The syntax error occurs at the ).

It looks like the session file used to be bigger, and then got
overwritten with a smaller version, leaving the garbage at the end.

Now the question: does anybody have any ideas or clues as to why
this happens? We have no idea where to start looking.

Thanks for any insight.

Remco Gerlich

Site Timeline