touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #117070
[Bug 1515060] [NEW] Wrong logging level when signal name (e.g., SIGTERM) is used with normal exit stanza
Public bug reported:
when using "normal exit 0 SIGTERM" in a job, and if the job is killed with SIGTERM, a warning message will appear in dmesg, like
[330159.038611] init: xxxyyyzzz main process (570) killed by TERM signal
If using "normal exit 0 SIGTERM 15" instead, there won't be such warning
message when the job is killed with SIGTERM, 15 is the numerical value
for SIGTERM, per "man 7 signal"
After reading the code, it looks to me that the issue is:
1. when parsing "normal exit 0 SIGTERM", the numerical value of SIGTERM is left shifted by 8 and then stored in job->class->normalexit
http://bazaar.launchpad.net/~upstart-devel/upstart/trunk/view/head:/init/parse_job.c#L2433
2. but when determining the appropriate log level, the value in job->class->normalexit is compared directly to numerical value of the signal, (without left shift the signal value)
http://bazaar.launchpad.net/~upstart-devel/upstart/trunk/view/head:/init/job_process.c#L1495
When using "normal exit 0 SIGTERM 15", both "15 << 8" and 15 will be stored in job->class->normalexit, the code to store 15 is at
http://bazaar.launchpad.net/~upstart-devel/upstart/trunk/view/head:/init/parse_job.c#L2428
and thus later on the code to determine log level works.
Note that "normal exit 0 SIGTERM" works well with "respawn", it is just
the logging code has the minor bug said above.
** Affects: upstart (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to upstart in Ubuntu.
https://bugs.launchpad.net/bugs/1515060
Title:
Wrong logging level when signal name (e.g., SIGTERM) is used with
normal exit stanza
Status in upstart package in Ubuntu:
New
Bug description:
when using "normal exit 0 SIGTERM" in a job, and if the job is killed with SIGTERM, a warning message will appear in dmesg, like
[330159.038611] init: xxxyyyzzz main process (570) killed by TERM signal
If using "normal exit 0 SIGTERM 15" instead, there won't be such
warning message when the job is killed with SIGTERM, 15 is the
numerical value for SIGTERM, per "man 7 signal"
After reading the code, it looks to me that the issue is:
1. when parsing "normal exit 0 SIGTERM", the numerical value of SIGTERM is left shifted by 8 and then stored in job->class->normalexit
http://bazaar.launchpad.net/~upstart-devel/upstart/trunk/view/head:/init/parse_job.c#L2433
2. but when determining the appropriate log level, the value in job->class->normalexit is compared directly to numerical value of the signal, (without left shift the signal value)
http://bazaar.launchpad.net/~upstart-devel/upstart/trunk/view/head:/init/job_process.c#L1495
When using "normal exit 0 SIGTERM 15", both "15 << 8" and 15 will be stored in job->class->normalexit, the code to store 15 is at
http://bazaar.launchpad.net/~upstart-devel/upstart/trunk/view/head:/init/parse_job.c#L2428
and thus later on the code to determine log level works.
Note that "normal exit 0 SIGTERM" works well with "respawn", it is
just the logging code has the minor bug said above.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/1515060/+subscriptions