Incompatible marshal file format

Hi,

I’ve written a RoR application that I would like to be able to deploy
more
widely, but I’m running into a rather peculiar problem with it.

First, some context. Here’s what I’ve got installed:

actionmailer (1.3.3)
actionpack (1.13.3)
actionwebservice (1.2.3)
activerecord (1.15.3)
activesupport (1.4.2)
fcgi (0.8.7)
mime-types (1.15)
rails (1.2.3)
rake (0.7.3)
sources (0.0.1)
sqlite3-ruby (1.2.1)
unicode (0.1)
ruby 1.8.4 (2005-12-24) [i386-freebsd6]

In my application, I’m generating a home page for my own use, that has
on it
some useful links plus schedule info and news. So, while there are other
pages
in the app, mostly, my browser is sitting on one particular page all the
time.
Because the page content changes over time, I have this statement in the
HEAD
section of the .rhtml

causing the page to be reloaded every 10 minutes. I have this same page
up
on
a number of machines in my office, so each of them refreshes every 10
minutes,
at staggered times.

I only have one plugin installed: acts_as_authenticated (most recent
comment
in
the CHANGELOG is 1 Aug 2006. Freshly downloaded). This page
requires a username and password to access, and aaa is how I do that.
Once
logged in, the page can be accessed as much as you like without
reauthentication.

This arrangement works fine for days at a time, but every once in a
while,
the whole thing spazzes out with this error:

TypeError (incompatible marshal file format (can’t be read)
format version 4.8 required; 47.117 given):
/usr/local/lib/ruby/1.8/pstore.rb:353:in load' /usr/local/lib/ruby/1.8/pstore.rb:353:inload’
/usr/local/lib/ruby/1.8/pstore.rb:306:in transaction' /usr/local/lib/ruby/1.8/cgi/session/pstore.rb:90:inupdate’
/usr/local/lib/ruby/1.8/cgi/session/pstore.rb:97:in close' /usr/local/lib/ruby/1.8/cgi/session.rb:330:inclose’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1184:in
close_session' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:1228:inprocess_cleanup_without_flash’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/flash.rb:146:in
process_cleanup_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:662:inprocess_cleanup_without_session_management_support’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/session_management.rb:124:in
process_cleanup_without_components' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/components.rb:178:inprocess_cleanup’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:435:in
process_without_filters' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/filters.rb:624:inprocess_without_session_management_support’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/session_management.rb:114:in
process' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/base.rb:330:inprocess’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:41:in
dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:168:inprocess_request’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:143:in
process_each_request!' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:109:inwith_signal_handler’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:142:in
process_each_request!' /usr/local/lib/ruby/site_ruby/1.8/fcgi.rb:612:ineach_cgi’
/usr/local/lib/ruby/site_ruby/1.8/fcgi.rb:609:in each_cgi' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:141:inprocess_each_request!’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:55:in
process!' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:25:inprocess!’
/home/homepage/public/dispatch.fcgi:24

Once it spazzes, the server (lighttpd, running with fastCGI from a shell
as
“script/server” while I’m developing) is useless and must be restarted.
The
pages that were active when this happens get only garbage. Refreshing
them
gets more garbage. Killing and restarting the server fixes everything,
for
the
moment.

By lowering the time in the META directive, I can make it happen faster,
but
never consistently. It still takes the better part of a day to occur.
There
are no database writes happening here, so it should not be a contention
issue
there.

The only thing that I can think of is that I am logged in as the same
user
on
each machine, and somehow RoR is trying to update the same session file
for
each different session, and two or more sessions are colliding in this,
trashing the file. However, the fact that killing and restarting the
server
works (and doesn’t require relogin, just refresh), suggests that the
session
files are not trashed, so the problem is likely elsewhere.

Any thoughts? All constructive help is greatly appreciated!

–Tom