From 5c36b1391ad7c08280fe89a60de70c47cd853849 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. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Kyle M Hall (cherry picked from commit 9237fe676336f5908a9acc26a3b70b70d25602ae) Signed-off-by: Frédéric Demians (cherry picked from commit d9def60267c1eb8aaacf4958de3bbddbace27621) Signed-off-by: Julian Maurice --- cataloguing/additem.pl | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index b3474f6d04..b896b0bed6 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.39.5