I've just released Mojolicious 5.30 with a rather important bug fix. If 
you're using a preforking server and templates/static files in DATA 
sections, i strongly recommend you upgrade to save yourself some headaches. 
Random 404 responses that suddenly disappear again are just one of the 
possible symptoms.

  
  https://github.com/kraih/mojo/commit/54f0926c118efa2512c0ffec76def0a5aebec8be

The fix without context may look rather simple, but is anything but. I've 
known about this bug for over 2 years, but whenever i tried tracking it 
down it would just disappear. This time i got lucky though, and it appeared 
right when i was profiling some optimizations and i ended up with a test 
case that had a 1 in 50 chance of triggering it.

    https://github.com/kraih/mojo/blob/v5.30/lib/Mojo/Loader.pm#L53-L56

It's all about these four lines, there is a race condition, and you will 
most likely not be able to spot it. All forked Perl processes dup DATA 
handles, but those handles still share a single seek pointer. So, if 
multiple processes try slurping a DATA section at the same time, they will 
all throw around the seek pointer, interfering with each other, and you end 
up with corrupted or missing data, which can then trigger any number of 
funny symptoms.

So do yourself a favor and UPGRADE! :)

--
sebastian

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to