Bug 97534
Summary: | Deadlock in init's log() funciton | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [Retired] Red Hat Linux | Reporter: | James Olin Oden <james.oden> | ||||||
Component: | SysVinit | Assignee: | Bill Nottingham <notting> | ||||||
Status: | CLOSED RAWHIDE | QA Contact: | David Lawrence <dkl> | ||||||
Severity: | medium | Docs Contact: | |||||||
Priority: | medium | ||||||||
Version: | 9 | CC: | mitr, rvokal, tao | ||||||
Target Milestone: | --- | ||||||||
Target Release: | --- | ||||||||
Hardware: | i686 | ||||||||
OS: | Linux | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | 2.85-4 | Doc Type: | Bug Fix | ||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2003-06-25 20:38:13 UTC | Type: | --- | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Attachments: |
|
Description
James Olin Oden
2003-06-17 14:38:34 UTC
Created attachment 92444 [details]
Causes log() in init.c to block signals while talking to syslog.
The fix for this (at least one of the fixes) is to simply block signals while
talking to syslog().
Created attachment 92445 [details]
Simple programing showing how to cause a deadlock with syslog
This is a simple program that causes the same deadlock in syslog() that
happens in init.c. The strategy is simple:
1) Fork().
2) Parent sleeps a second.
3) Child creates a signal handler for SIGUSR1.
4) Child starts writing log messages to syslog over and over.
5) Parent begins sending SIGUSR1 to the child.
6) The child catches SIGUSR1, and in the signal handler tries to
write to syslog. If it was in syslog when it caught the signal
a deadlock occurs.
I have only tested this one on a 1GigHz single processor.
Fixed in 2.85-4, thanks! |