On Wed, Feb 03, 2010 at 07:57:42AM -0500, Cole Robinson wrote:
On 02/03/2010 03:33 AM, Jiri Denemark wrote:
> ...
>> diff --git a/src/util/util.c b/src/util/util.c
>> index cf1290d..901c0d2 100644
>> --- a/src/util/util.c
>> +++ b/src/util/util.c
>> @@ -415,12 +415,19 @@ __virExec(virConnectPtr conn,
>> childerr = null;
>> }
>>
>> + /* Ensure we hold the logging lock, to protect child processes
>> + * from deadlocking on another threads inheirited mutex state */
>> + virLogLock();
>> +
>> if ((pid = fork()) < 0) {
>> virReportSystemError(conn, errno,
>> "%s", _("cannot fork child
process"));
>> goto cleanup;
>> }
>>
>> + /* Unlock for both parent and child process */
>> + virLogUnlock();
>> +
>> if (pid) { /* parent */
>> close(null);
>> if (outfd && *outfd == -1) {
>
> Hmm, shouldn't we virLogUnlock() even if fork() fails? That is, something
> like:
>
> virLogLock();
> pid = fork();
> virLogUnlock();
>
> if (pid < 0)
> error;
> else if (pid)
> parent;
> ...
>
> Jirka
>
Argh, yes, good call. I'll update the patch and resend.
Thanks,
Cole
Okay I did the small change and commited the patch accordingly,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/