/usr/share/perl5/Net/Server/Fork.pm 第 168 行,在数字等式 (==) 中使用未初始化的值

/usr/share/perl5/Net/Server/Fork.pm 第 168 行,在数字等式 (==) 中使用未初始化的值

在我的新 Debian Bookworm 上,/usr/share/perl5/Net/Server/Fork.pm每次 Munin 调用该文件时,都会在日志中生成错误。记录的错误是

“在 /usr/share/perl5/Net/Server/Fork.pm 第 168 行,数字等式 (==) 中使用了未初始化的值。”

在 Debian Bullseye 中,没有错误。

顺便说一下,两个版本之间的区别如下:

5c5
< #  Copyright (C) 2001-2017
---
> #  Copyright (C) 2001-2022
146a147
>         $self->register_child($pid, 'fork');
167c168
<     if (SOCK_DGRAM == $sock->getsockopt(SOL_SOCKET,SO_TYPE)) {
---
>     if (SOCK_DGRAM == unpack('i', $sock->getsockopt(SOL_SOCKET, SO_TYPE))) {

第 168 行是最后一个差异,问题就发生在这里。

我不懂 Perl,那么我该如何解决这个问题并将错误报告给 Perl 包所有者?

答案1

看起来这个问题已经报告给了github perl-net-server 问题 32。您可以添加自己的分析,看看是否能引起更好的关注。

我没有看到中央 Perl 错误跟踪系统所以你可能想把它添加到那里。如果是这样,请包含指向 github 问题的链接。

修复此问题的代码应该非常简单:

my $sockopt = unpack('i', $sock->getsockopt(SOL_SOCKET, SO_TYPE));
if (defined $sockopt and SOCK_DGRAM == $sockopt) {

假设变量名未在代码附近使用。

相关内容