Subject: bug#731: needrestart -b on AMD processors complains of perl uninitialized variable

From: George Robbert <[email-masked]>
Date: Thu, 22 Dec 2022 14:26:34 -0700

Package: needrestart
Version: 3.5-4+deb11u2
Severity: normal

Dear Maintainer,

When running 'needrestart -b' on an AMD system, I get the following
uninitialized variable warning.  It also does not report the expected
microcode version (NEEDRESTART-UCEXP).  See output: section below for
example output of needrestart -b.

Use of uninitialized value $ucode_vars{"AVAIL"} in concatenation (.) or string at /usr/sbin/needrestart line 904.

This perl warning disappears when adding the -v option (needrestart -b -v),
and the correct value is reported for NEEDRESTART-UCEXP.

It looks to me like the problem is that line 182 of
/usr/share/perl5/NeedRestart/uCode/AMD.pm ends in a comma (,) instead
of a semicolon (;).  This means that assignment is subsumed into the
next line which is under if ($debug).

See the attached patch.  The debsum error reported below is due to my
applying this patch.

Thanks,
George Robbert

-- Package-specific info:
needrestart -b output:

NEEDRESTART-VER: 3.5
NEEDRESTART-KCUR: 5.10.0-20-amd64
NEEDRESTART-KEXP: 5.10.0-20-amd64
NEEDRESTART-KSTA: 1
NEEDRESTART-UCSTA: 1
NEEDRESTART-UCCUR: 0x03000027
Use of uninitialized value $ucode_vars{"AVAIL"} in concatenation (.) or string at /usr/sbin/needrestart line 904.
NEEDRESTART-UCEXP: 

-- System Information:
Distributor ID:	Devuan
Description:	Devuan GNU/Linux 4 (chimaera)
Release:	4
Codename:	chimaera
Architecture: x86_64

Kernel: Linux 5.10.0-20-amd64 (SMP w/2 CPU threads)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=ANSI_X3.4-1968) (ignored: LC_ALL set to C), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages needrestart depends on:
ii  binutils                   2.35.2-2
ii  dpkg                       1.20.12
ii  gettext-base               0.21-4
ii  libintl-perl               1.26-3+deb11u1
ii  libmodule-find-perl        0.15-1
ii  libmodule-scandeps-perl    1.30-1
ii  libproc-processtable-perl  0.59-2+b1
ii  libsort-naturally-perl     1.03-2
ii  libterm-readkey-perl       2.38-1+b2
ii  perl                       5.32.1-4+deb11u2
ii  xz-utils                   5.2.5-2.1~deb11u1

Versions of packages needrestart recommends:
ii  libpam-elogind [libpam-systemd]  246.10-2
ii  sysvinit-core                    2.96-7+devuan2

Versions of packages needrestart suggests:
pn  iucode-tool                          <none>
pn  needrestart-session | libnotify-bin  <none>

-- Configuration Files:
/etc/apt/apt.conf.d/99needrestart changed:
DPkg::Post-Invoke {"test -x /usr/lib/needrestart/apt-pinvoke && /usr/lib/needrestart/apt-pinvoke -b || true"; };

/etc/needrestart/hook.d/20-rpm [Errno 2] No such file or directory: '/etc/needrestart/hook.d/20-rpm'

-- no debconf information

-- debsums errors found:
debsums: changed file /usr/share/perl5/NeedRestart/uCode/AMD.pm (from needrestart package)
--- /tmp/AMD.pm	2022-12-22 11:00:14.589106185 -0700
+++ /usr/share/perl5/NeedRestart/uCode/AMD.pm	2022-12-22 11:00:24.329046436 -0700
@@ -179,7 +179,7 @@
     if ( exists( $_ucodes->{cpuid}->{$cpuid} ) ) {
         my $prid = $_ucodes->{cpuid}->{$cpuid};
         if ( exists( $_ucodes->{prid}->{$prid} ) ) {
-            $vars{AVAIL} = sprintf( "0x%08x", $_ucodes->{prid}->{$prid} ),
+            $vars{AVAIL} = sprintf( "0x%08x", $_ucodes->{prid}->{$prid} );
 
               print STDERR "$LOGPREF #$info->{processor} found ucode $vars{AVAIL}\n" if ($debug);
             if ( $_ucodes->{prid}->{$prid} > $ucode ) {

---

From: Mark Hindley <[email-masked]>
Date: Fri, 23 Dec 2022 09:40:16 +0000

Control: tags -1 debian
Control: forwarded -1  https://bugs.debian.org/973050

George,

> Severity: normal

Many thanks for this.

However, needrestart is not a forked package and Devuan uses Debian's packages
directly without recompilation. Indeed this issue seems to have been reported
already to Debian's BTS[1]. Perhaps you could add your voice and patch to that
report?

Thanks

Mark

[1]  https://bugs.debian.org/973050

---

From: George Robbert <[email-masked]>
Date: Fri, 23 Dec 2022 18:43:55 -0700

Mark,

> [1]  https://bugs.debian.org/973050

Thanks for pointing me in the right direction.

Looking at Debian bug #973050, I see that has similar symptoms, but a
different underlying cause to this bug.  So, I went ahead and
submitted a new bug to Debian[2].  If the maintainer decides that they
actually are the same underlying bug, he can merge this as a
duplicate.

Thanks,
George

[2] https://bugs.debian.org/1026927

---

From: Mark Hindley <[email-masked]>
Date: Sat, 24 Dec 2022 08:55:50 +0000

Control: forwarded -1 https://bugs.debian.org/1026927

George,

Thanks.

Sorry for not noticing the underlying cause was different.

Mark

---

From: "Devuan bug Tracking System" <[email-masked]>
Date: Wed, 18 Jan 2023 20:14:04 +0000

This is an automatic notification regarding your bug report
which was filed against the needrestart package:

#731: needrestart -b on AMD processors complains of perl uninitialized variable

It has been closed by Mark Hindley <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Mark Hindley <[email-masked]> by
replying to this email.

-- 
731: https://bugs.devuan.org/cgi/bugreport.cgi?bug=731
Devuan Bug Tracking System
Contact [email-masked] with problems

Subject: Fixed in Debian #1026927
From: Mark Hindley <[email-masked]>
To: [email-masked]
Date: Wed, 18 Jan 2023 20:11:38 +0000

Version: 3.6-1

Subject: needrestart -b on AMD processors complains of perl uninitialized variable
From: George Robbert <[email-masked]>
To: Devuan Bug Tracking System <[email-masked]>
Date: Thu, 22 Dec 2022 14:26:34 -0700

Package: needrestart
Version: 3.5-4+deb11u2
Severity: normal

Dear Maintainer,

Thanks,
George Robbert

NEEDRESTART-VER: 3.5

-- System Information:
Distributor ID:	Devuan

-- Configuration Files:

-- debsums errors found: