Openqa jobs won't start after updating perl-json-xs to verison 3.02
New job fail to start with following error in autoinst-log:
json at /usr/lib/os-autoinst/backend/driver.pm line 195.
backend::driver::send_json(backend::driver=HASH(0x474c260), HASH(0x5a92898)) called at /usr/lib/os-autoinst/backend/driver.pm line 181
backend::driver::ANON_(backend::driver=HASH(0x474c260)) called at /usr/lib/os-autoinst/bmwqemu.pm line 357
bmwqemu::alive() called at /usr/bin/isotovideo line 149
hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this) at /usr/lib/os-autoinst/backend/driver.pm line 197.
Perl exited with active threads:
1 running and unjoined
0 finished and unjoined
0 running and detached
From changelog: https://metacpan.org/release/JSON-XS
- allow_nonref now affects booleans
Jobs worked again after reverting to perl-json-xs 3.01.
#1 Updated by nadvornik over 5 years ago
- Assignee set to nadvornik
It seems to be a bug in JSON-XS-3.02 related to threads: on XS.xs:338 it uses global variable bool_stash and on XS.xs:1987 it sets this variable to zero when a new thread is created.
It may work with the workaround - setting allow_nonref, but I think that the best fix is to replace perl threads with normal fork().
#2 Updated by okurz over 5 years ago
- Status changed from New to In Progress
https://github.com/os-autoinst/os-autoinst/pull/497 is said to fix it but I don't want to decide if that is really true ;-) PR is merged.