На моем новом 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 — это последний diff, где возникает проблема.
Я не знаю Perl, так как я могу решить эту проблему и сообщить об ошибке владельцу пакета Perl?
Дом
1 ответ
Похоже, что об этой проблеме уже сообщалось в проекте в github perl-net-сервер проблема 32. Вы можете добавить туда свой собственный анализ, чтобы увидеть, может ли это привлечь больше внимания.
Я не вижу, чтобы об этом сообщалось в центральная система отслеживания ошибок Perl так что вы можете добавить его туда. Если это так, пожалуйста, включите ссылку на проблему github.
Исправление кода для этого должно быть довольно простым:
my $sockopt = unpack('i', $sock->getsockopt(SOL_SOCKET, SO_TYPE));
if (defined $sockopt and SOCK_DGRAM == $sockopt) {
предполагая, что имя переменной не используется поблизости в коде.
цыплята