From a5b2701b229686a495900cb372fd6cd87e0a0e44 Mon Sep 17 00:00:00 2001 From: Olli-Antti Kivilahti Date: Thu, 17 Sep 2015 13:23:49 +0300 Subject: [PATCH] Bug 14844: Corrupted storable string. When adding/editing an Item, cookie LastCreatedItem might be corrupted. No idea how to replicate this issue but we have been getting several reports about the following error: Software error: Corrupted storable string (binary v2.9) at /usr/lib/perl/5.18/Storable.pm line 417, at /home/koha/kohaclone/cataloguing/additem.pl line 375. TEST PLAN: 1. Add or modify an Item. 2. No observed changes. ?. We don't know what causes this but we know that add/modify Item occasionally crashes due to failure of a cookie thawing. This patch prevents the whole program from dying, because this error is not critical enough to warrant dying. Also there is no centralized mechanism in Koha for showing messages to the user, so there is no easy and convenient way to warn the user that the: 'LastCreatedItem'-cookie or the systempreference 'PrefillItem' is malfunctioning. So we instead just warn to the server logs with the malfunctioning cookie in hopes of nailing down what causes the issues. Signed-off-by: Tomas Cohen Arazi Signed-off-by: Jonathan Druart --- cataloguing/additem.pl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 28fd247..1984a05 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -417,9 +417,15 @@ if ($prefillitem) { my $lastitemcookie = $input->cookie('LastCreatedItem'); if ($lastitemcookie) { $lastitemcookie = uri_unescape($lastitemcookie); - if ( thaw($lastitemcookie) ) { - $cookieitemrecord = thaw($lastitemcookie) ; - $cookieitemrecord = removeFieldsForPrefill($cookieitemrecord); + eval { + if ( thaw($lastitemcookie) ) { + $cookieitemrecord = thaw($lastitemcookie); + $cookieitemrecord = removeFieldsForPrefill($cookieitemrecord); + } + }; + if ($@) { + $lastitemcookie = 'undef' unless $lastitemcookie; + warn "Storable::thaw failed to thaw LastCreatedItem-cookie. Cookie value '$lastitemcookie'. Caught error follows: '$@'"; } } } -- 2.8.1