I wrote:
Here is what happened when I tried to reload lighttpd while looking with strace whan systemd is doing:

[ 3639.047649] systemd[1]: Assertion 's->control_command_id == SERVICE_EXEC_START' failed at src/service.c:2184, function service_run_next_main(). Aborting.
[ 3639.052182] systemd[1]: Caught <ABRT>, dumped core as pid 6045.
[ 3639.052376] systemd[1]: Freezing execution.

I could not reproduce the bug without stracing systemd:

strace -ff -e process -p 1

Now I can reproduce it more reliably without strace. Here is the slightly modified service file:

[Unit]
Description=Lighttpd Web Server
After=network.target

[Service]
Type=forking

PIDFile=/var/run/lighttpd.pid

#ExecStartPre=/usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf
ExecStart=/usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf

ExecStop=/bin/kill -INT $MAINPID

#ExecReload=/usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf
ExecReload=/bin/kill -INT $MAINPID
ExecReload=/bin/sleep 1
ExecReload=/usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf

StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target
WantedBy=http-daemon.target

To reproduce, I just have to do some attempts of "start, stop, start again, reload" actions, with 30-second pauses between them. Reproduction is not 100% reliable.

Here is the output of "systemctl status lighttpd.service" just before issuing the "reload" command that triggered the assertion:

home ~ # systemctl status lighttpd.service
lighttpd.service - Lighttpd Web Server
      Loaded: loaded (/etc/systemd/system/lighttpd.service)
Active: active (running) since Mon, 10 Jan 2011 17:18:44 +0500; 1s ago
     Process: 2382 (/bin/kill -INT $MAINPID, code=exited, status=1/FAILURE)
Process: 2390 (/usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf, code=exited, status=0/SUCCESS)
    Main PID: 2393 (lighttpd)
      CGroup: name=systemd:/system/lighttpd.service
          └ 2393 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf

Here is the backtrace, according to my core file:

#0  0x00007fe1316b7acb in raise () from /lib/libpthread.so.0
#1  0x0000000000408f6b in crash (sig=6) at src/main.c:118
#2 <signal handler called>
#3  0x00007fe130923b25 in raise () from /lib/libc.so.6
#4  0x00007fe130925330 in abort () from /lib/libc.so.6
#5 0x0000000000456ff7 in log_assert (file=0x473cb3 "src/service.c", line=2184, func=<value optimized out>,
    format=<value optimized out>) at src/log.c:492
#6 0x00000000004206f0 in service_run_next_main (u=0x2721990, pid=2393, code=1, status=0) at src/service.c:2184 #7 service_sigchld_event (u=0x2721990, pid=2393, code=1, status=0) at src/service.c:2525 #8 0x000000000040c1af in manager_dispatch_sigchld (m=0x25bb1c0) at src/manager.c:2011 #9 0x00000000004117e3 in manager_process_signal_fd (m=0x25bb1c0) at src/manager.c:2186
#10 process_event (m=0x25bb1c0) at src/manager.c:2211
#11 manager_loop (m=0x25bb1c0) at src/manager.c:2345
#12 0x000000000040a1e5 in main (argc=<value optimized out>, argv=<value optimized out>) at src/main.c:1166

--
Alexander E. Patrakov
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to