NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

misc/46546: powerd script fails due to spurious environment variable

>Number:         46546
>Category:       misc
>Synopsis:       powerd script fails due to environment variable passed from rc
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    misc-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jun 05 16:25:00 +0000 2012
>Release:        NetBSD 6.0_BETA2
System: NetBSD kestrel 6.0_BETA2 NetBSD 6.0_BETA2 (GENERIC) #7: Wed May 23 
23:37:40 JST 2012 fukumoto@kestrel:/u/src/sys/arch/amd64/compile/obj/GENERIC 
Architecture: x86_64
Machine: amd64
        As I reported in
        powerd(8) script fails due to the environment variable passed from 

        When booting the system, rc_real_work() in /etc/rc defines the
        environment variable $_rc_postprocessor_fd, and spawns daemons
        including powerd(8).  Later, when sleep button is pressed,
        powerd(8) calls /etc/powerd/scripts/sleep_button, which then
        calls /etc/rc.d/network.  It includes /etc/rc.subr, which
        overrides the normal "echo" with its own echo() shell
        function.  Thus "echo -n" inside network script calls
        _flush_rc_output(), which calls print_rc_metadata(), which,
        since $_rc_postprocessor_fd is defined, tries to transmit a
        metadata to postprocessor through $_rc_postprocessor_fd, but
        the postprocessor doesn't exist anymore when powerd script is
        executed, and the network script fails for SIGPIPE.

        Set powerd=YES in /etc/rc.conf and restart the system.  Press
        the sleep button to sleep, then resume the system and observe
        /etc/rc.d/network exits midway.

        Either run_rc_command or powerd should clean-up the
        environment variables before spawning subprocesses.


Home | Main Index | Thread Index | Old Index