http://bugzilla.opensuse.org/show_bug.cgi?id=966042
Bug ID: 966042 Summary: yast command-line usage emits "unable to close filehandle properly" warning at exit Classification: openSUSE Product: openSUSE Tumbleweed Version: 2015* Hardware: x86-64 OS: SUSE Other Status: NEW Severity: Minor Priority: P5 - None Component: YaST2 Assignee: yast2-maintainers@suse.de Reporter: bk@ancilla.ca QA Contact: jsrain@suse.com Found By: --- Blocker: ---
Specifically, it says:
Warning: unable to close filehandle properly: Bad file descriptor, <STDIN> line 21 during global destruction (#1) (S io) An error occurred when Perl implicitly closed a filehandle. This usually indicates your file system ran out of disk space.
This happens with (as far as I can tell, I haven't tested exhaustively) all command-line yast invokations that involve a module. So, e.g., "yast users help" or "yast sysconfig help" will produce this message. "yast help" on its own, however, won't.
It does not appear to affect yast's exit code, or it's ability to do its job; if I run "yast sysconfig set LOADER_TYPE=none", it does the right thing and then produces that message while exiting.
Despite the hint that it may be space-related, this happens on multiple computers, all of them with plenty of space available on all filesystems. These systems are all running recent (~2 weeks) versions of Tumbleweed.
http://bugzilla.opensuse.org/show_bug.cgi?id=966042 http://bugzilla.opensuse.org/show_bug.cgi?id=966042#c1
Martin Vidner mvidner@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |CONFIRMED CC| |mvidner@suse.com
--- Comment #1 from Martin Vidner mvidner@suse.com --- Confirmed with TW from 2015-10-02.
BTW this seems to be unrelated to the ncurses UI which had similar FD-closing problems in the past. The same happens also with QT or with the null UI:
/usr/lib/YaST2/bin/y2base 'sysconfig' '-S' '(help)' UI
http://bugzilla.opensuse.org/show_bug.cgi?id=966042
Robert Schweikert rjschwei@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |rjschwei@suse.com
http://bugzilla.opensuse.org/show_bug.cgi?id=966042
Sebastian Wagner sebix+novell.com@sebix.at changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sebix+novell.com@sebix.at
http://bugzilla.opensuse.org/show_bug.cgi?id=966042 http://bugzilla.opensuse.org/show_bug.cgi?id=966042#c2
--- Comment #2 from Sebastian Wagner sebix+novell.com@sebix.at --- Still not fixed in current Tumblemweed 20160707 and Yast2 3.1.195-1.1
I get different outputs for a normal user and root:
yast timezone help
No permissions.
YaST Configuration Module timezone -----------------------------------
Time zone configuration
Basic Syntax: yast2 timezone interactive yast2 timezone <command> [verbose] [options] yast2 timezone help yast2 timezone longhelp yast2 timezone xmlhelp yast2 timezone <command> help
Commands: list List all available time zones set Set new values for time zone configuration summary Time zone configuration summary
Run 'yast2 timezone <command> help' for a list of available options.
print() on unopened filehandle STDERR at /usr/lib/perl5/5.24.0/diagnostics.pm line 651, <STDIN> line 19 during global destruction. print() on unopened filehandle STDERR at /usr/lib/perl5/5.24.0/diagnostics.pm line 653, <STDIN> line 19 during global destruction. Invalid snapshot ''.
sudo yast timezone help
[sudo] password for root:
YaST Configuration Module timezone -----------------------------------
Time zone configuration
Basic Syntax: yast2 timezone interactive yast2 timezone <command> [verbose] [options] yast2 timezone help yast2 timezone longhelp yast2 timezone xmlhelp yast2 timezone <command> help
Commands: list List all available time zones set Set new values for time zone configuration summary Time zone configuration summary
Run 'yast2 timezone <command> help' for a list of available options.
Warning: unable to close filehandle properly: Bad file descriptor, <STDIN> line 19 during global destruction (#1) (S io) There were errors during the implicit close() done on a filehandle when its reference count reached zero while it was still open, e.g.:
{ open my $fh, '>', $file or die "open: '$file': $!\n"; print $fh $data or die "print: $!"; } # implicit close here
Because various errors may only be detected by close() (e.g. buffering could allow the print in this example to return true even when the disk is full), it is dangerous to ignore its result. So when it happens implicitly, perl will signal errors by warning.
Prior to version 5.22.0, perl ignored such errors, so the common idiom shown above was liable to cause silent data loss.
http://bugzilla.opensuse.org/show_bug.cgi?id=966042 http://bugzilla.opensuse.org/show_bug.cgi?id=966042#c10
Knut Alejandro Anderssen González knut.anderssen@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |suse-beta@cboltz.de
--- Comment #10 from Knut Alejandro Anderssen González knut.anderssen@suse.com --- *** Bug 1080037 has been marked as a duplicate of this bug. ***
http://bugzilla.opensuse.org/show_bug.cgi?id=966042
Luis Pineda epineda@crypto.com.mx changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |epineda@crypto.com.mx
http://bugzilla.opensuse.org/show_bug.cgi?id=966042 http://bugzilla.opensuse.org/show_bug.cgi?id=966042#c11
Nathan Cutler ncutler@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|CONFIRMED |IN_PROGRESS CC| |coolo@suse.com Flags| |needinfo?(coolo@suse.com)
--- Comment #11 from Nathan Cutler ncutler@suse.com --- Update:
- update the latter package to the latest upstream version
Done by https://build.opensuse.org/request/show/668117
- have it obsolete the former package
Done by https://build.opensuse.org/request/show/668636 and https://build.opensuse.org/request/show/668903
- and also drop that one
Not sure how to proceed with the drop. Both the devel project and Factory have both packages, but the builds of the wrongly-named one are excluded/disabled in Factory:
https://build.opensuse.org/package/show/devel:languages:perl/perl-TermReadLi... https://build.opensuse.org/package/show/devel:languages:perl/perl-Term-ReadL... https://build.opensuse.org/package/show/openSUSE:Factory/perl-TermReadLine-G... https://build.opensuse.org/package/show/openSUSE:Factory/perl-Term-ReadLine-...
@Coolo - any suggestion? (Having the wrongly-named package present at all seems confusing and undesirable.)
http://bugzilla.opensuse.org/show_bug.cgi?id=966042 http://bugzilla.opensuse.org/show_bug.cgi?id=966042#c12
Nathan Cutler ncutler@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|IN_PROGRESS |RESOLVED Resolution|--- |FIXED Flags|needinfo?(coolo@suse.com) |
--- Comment #12 from Nathan Cutler ncutler@suse.com --- Wrongly-named package dropped from both devel:languages:perl and openSUSE:Factory
Thanks, Coolo, for helping!
http://bugzilla.opensuse.org/show_bug.cgi?id=966042
Nathan Cutler ncutler@suse.com changed:
What |Removed |Added ---------------------------------------------------------------------------- See Also| |http://bugzilla.opensuse.or | |g/show_bug.cgi?id=1203080