Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package lintian The 2.5.50.2 unload works around a "perl stack" corruption (not to be confused with perl's C stack) and makes a gnuplot file compability with gnuplot 5 (so it works with the version we are shipping in stretch). I will expand on the stack corruption below in case it is relevant for your understanding of the issue and the fix[1]. That said, the fix is shorter than my explanation, so you may just want to skip ahead to the debdiff. unblock lintian/2.5.50.2 Thanks, ~Niels [1] Perl stack corruption ===================== For most runs, "perl stack" corruption occurs but perl never notices it until it has to unwind the stack to the point of the corruption. On a successful run, the lintian tools will always exit from their main sub and therefore avoid the issue. To reproduce this bug, you will have to cause the tool to throw an exception that generates a stack trace (or unwinds past the main sub). That is very trivial to do with the reporting framework (but could in theory happen in lintian-info and lintian-lab-tool). It cannot be reproduced in lintian itself. Lintian 2.5.50.2 is started via an "exec" call after the stack corruption, so lintian cannot unwind to the corrupted stack. To reproduce, install lintian 2.5.50.1 and run: """ $ mkdir empty-dir $ /usr/share/lintian/frontend/dplint reporting-sync-state \ --state-dir empty-dir \ --mirror-path /value-does-not-matter \ --distributions value-does-not-matter \ --architectures value-does-not-matter \ --mirror-areas value-does-not-matter \ --desired-version 2.5.50.1 Can't locate object method "errno" via package "Bizarre copy of ARRAY in list assignment at /usr/share/perl/5.24/Carp.pm line 229. " (perhaps you forgot to load "Bizarre copy of ARRAY in list assignment at /usr/share/perl/5.24/Carp.pm line 229. "?) at /usr/share/perl5/Lintian/Util.pm line 1614. """ The output here is a "double fault". First, perl notices the corruption and throws a string exception with the text: "Bizarre copy of ARRAY in list assignment at /usr/share/perl/5.24/Carp.pm line 229.\n" Lintian catches this assuming it is an autodie exception and then tries to call the "errno" method on it. Obviously this fails again leading to the weird error message. The work around for this is to avoid passing the "@ARGV" variable on the stack (i.e. passing as an argument to a perl sub). That way, the perl stack is not corrupted when Getopt::Long parses the options. Thanks, ~Niels