RT 5 json error

After installing RT 5 with a database upgrade I have multiple JSON errors. First an encode error, becouse of which I can’t log in at all. To manage this error I’ve added “allow_blessed => 1 parameter” at Web.pm. Now I can sign in, but have json decode errors on multiple pages. I can fix it by setting allow_nonref to true, but this error occurs on too many pages.

Did you install RT5 into a clean /opt/rt5 directory? There shouldn’t be any code errors on something like login, maybe some rt4 code is left over?

It’s a clean directory, I had rt 4 on that machine, but not is opt/rt5. There isn’t any rt4 code in it, and I don’t have any plugins installed to, but I had many plugins installed to the 4, which has written to the database. So I think the problem is in the database somehow.

Do you have a copy of the JSON error you were seeing on login?

This is it:

error: encountered object ‘1’, but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing) at /usr/local/share/perl/5.24.1/JSON.pm line 173.
context:


169: $json->$method( $opt->{$method} );
170: }
171: }
172:
173: json->encode(_[0]);
174: }
175:
176:
177: sub from_json ($@) {

code stack: /usr/local/share/perl/5.24.1/JSON.pm:173
/opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm:202
/opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm:4590
/opt/rt5/share/html/Elements/JavascriptConfig:93
/opt/rt5/share/html/Elements/Header:64
/opt/rt5/share/html/index.html:4
/opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm:710
/opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm:389
/opt/rt5/share/html/autohandler:53

encountered object ‘1’, but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing) at /usr/local/share/perl/5.24.1/JSON.pm line 173.

Trace begun at /usr/share/perl5/HTML/Mason/Exceptions.pm line 125
HTML::Mason::Exceptions::rethrow_exception(‘encountered object ‘1’, but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing) at /usr/local/share/perl/5.24.1/JSON.pm line 173.^J’) called at /usr/local/share/perl/5.24.1/JSON.pm line 173
JSON::to_json(‘HASH(0x7fa83026aa30)’, ‘HASH(0x7fa83024b258)’) called at /opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm line 202
RT::Interface::Web::EncodeJSON(‘HASH(0x7fa83026aa30)’) called at /opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm line 4590
HTML::Mason::Commands::JSON(‘HASH(0x7fa83026aa30)’) called at /opt/rt5/share/html/Elements/JavascriptConfig line 93
HTML::Mason::Commands::ANON at /usr/share/perl5/HTML/Mason/Component.pm line 135
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x7fa83024adf0)’) called at /usr/share/perl5/HTML/Mason/Request.pm line 1302
eval {…} at /usr/share/perl5/HTML/Mason/Request.pm line 1292
HTML::Mason::Request::comp(undef, undef) called at /opt/rt5/share/html/Elements/Header line 64
HTML::Mason::Commands::ANON(‘Title’, ‘Kezdőlap’, ‘Refresh’, 0, ‘SkipDoctype’, 1) called at /usr/share/perl5/HTML/Mason/Component.pm line 135
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x7fa83026a4d8)’, ‘Title’, ‘Kezdőlap’, ‘Refresh’, 0, ‘SkipDoctype’, 1) called at /usr/share/perl5/HTML/Mason/Request.pm line 1302
eval {…} at /usr/share/perl5/HTML/Mason/Request.pm line 1292
HTML::Mason::Request::comp(undef, undef, ‘Title’, ‘Kezdőlap’, ‘Refresh’, 0, ‘SkipDoctype’, 1) called at /opt/rt5/share/html/index.html line 4
HTML::Mason::Commands::ANON at /usr/share/perl5/HTML/Mason/Component.pm line 135
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x55d826b48ae0)’) called at /usr/share/perl5/HTML/Mason/Request.pm line 1302
eval {…} at /usr/share/perl5/HTML/Mason/Request.pm line 1292
HTML::Mason::Request::comp(undef, undef, undef) called at /opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm line 710
RT::Interface::Web::ShowRequestedPage(‘HASH(0x7fa83003d650)’) called at /opt/rt5/sbin/…/local/lib/RT/Interface/Web.pm line 389
RT::Interface::Web::HandleRequest(‘HASH(0x7fa83003d650)’) called at /opt/rt5/share/html/autohandler line 53
HTML::Mason::Commands::ANON at /usr/share/perl5/HTML/Mason/Component.pm line 135
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0x7fa83003cff0)’) called at /usr/share/perl5/HTML/Mason/Request.pm line 1300
eval {…} at /usr/share/perl5/HTML/Mason/Request.pm line 1292
HTML::Mason::Request::comp(undef, undef, undef) called at /usr/share/perl5/HTML/Mason/Request.pm line 481
eval {…} at /usr/share/perl5/HTML/Mason/Request.pm line 481
eval {…} at /usr/share/perl5/HTML/Mason/Request.pm line 433
HTML::Mason::Request::exec(‘RT::Interface::Web::Request=HASH(0x55d81ef5dec0)’) called at /usr/share/perl5/HTML/Mason/PSGIHandler.pm line 96
eval {…} at /usr/share/perl5/HTML/Mason/PSGIHandler.pm line 96
HTML::Mason::Request::PSGI::exec(‘RT::Interface::Web::Request=HASH(0x55d81ef5dec0)’) called at /usr/share/perl5/HTML/Mason/Interp.pm line 342
HTML::Mason::Interp::exec(undef, undef) called at /usr/share/perl5/HTML/Mason/PSGIHandler.pm line 59
eval {…} at /usr/share/perl5/HTML/Mason/PSGIHandler.pm line 59
HTML::Mason::PSGIHandler::invoke_mason(‘HTML::Mason::PSGIHandler::Streamy=HASH(0x55d8253eeb18)’, ‘HASH(0x55d8253eee30)’, ‘HASH(0x55d825178f90)’) called at /usr/share/perl5/HTML/Mason/PSGIHandler/Streamy.pm line 52
HTML::Mason::PSGIHandler::Streamy::ANON(‘CODE(0x7fa8300390b8)’) called at /usr/share/perl5/Plack/Util.pm line 339
Plack::Util::ANON(‘CODE(0x7fa830038fc8)’) called at /usr/share/perl5/Plack/Util.pm line 339
Plack::Util::ANON(‘CODE(0x7fa830038ef0)’) called at /usr/share/perl5/Plack/Handler/Apache2.pm line 89
Plack::Handler::Apache2::call_app(‘Plack::Handler::Apache2’, ‘Apache2::RequestRec=SCALAR(0x55d82428c620)’, ‘CODE(0x55d8254bd448)’) called at /usr/share/perl5/Plack/Handler/Apache2.pm line 126
Plack::Handler::Apache2::handler(‘Apache2::RequestRec=SCALAR(0x55d82428c620)’) called at -e line 0
eval {…} at -e line 0

Do you have anything in your /opt/rt5/local directory?

only the copy of the Web.pm file I made to fix this problem. Only the files I copied from RT to set the parameters when a new json error occurs.

I am seeing the exakt same thing on a new, minimalistic and fresh installation on Ubuntu 20.04 aka Focal:

[77549] [Wed Sep  2 12:06:08 2020] [error]: encountered object '1', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing) at /usr/share/perl5/JSON.pm line 173.

Stack:
  [/usr/share/perl5/JSON.pm:173]
  [/opt/rt5/sbin/../lib/RT/Interface/Web.pm:202]
  [/opt/rt5/sbin/../lib/RT/Interface/Web.pm:4590]
  [/opt/rt5/share/html/Elements/JavascriptConfig:93]
  [/opt/rt5/share/html/Elements/Header:64]
  [/opt/rt5/share/html/dhandler:48]
  [/opt/rt5/sbin/../lib/RT/Interface/Web.pm:710]
  [/opt/rt5/sbin/../lib/RT/Interface/Web.pm:389]
  [/opt/rt5/share/html/autohandler:53] (/opt/rt5/sbin/../lib/RT/Interface/Web/Handler.pm:209)

A collegue of mine found the issue based on an old RT4 bug - For us its fixed with purging libjson-xs-perl. It seems libjson-perl and libjson-xs-perl do have some incompatibilities.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869641

1 Like