This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fclose blocks until a fread call in another thread returns


On 19 Sep 2014 12:51, Mildred Ki'Lya wrote:
> I'm having a problem with glibc 2.20. I have a program with multiple 
> threads (two are running when I have the problem). The main thread 
> contains an event loop. The other thread is just a popen call to nmap, 
> and a read call that blocks until nmap has finished.
> 
> On the main thread, at some point, I open a file, write some content, 
> and then close the file.
> 
> The problem is that the main thread is always blocking until the nmap 
> thread finishes reading the popen pipe.
> 
> Running the application with gdb, I found the following stack traces:
> 
> main thread:
> 
> #0  0x00007ffff73d8b2b in __lll_lock_wait_private () from 
> /usr/lib/libc.so.6
> #1  0x00007ffff7359b25 in __GI__IO_un_link.part.1 () from 
> /usr/lib/libc.so.6
> #2  0x00007ffff734dad5 in fclose@@GLIBC_2.2.5 () from /usr/lib/libc.so.6
> 
> popen thread:
> 
> #0  0x00007ffff73bf55d in read () from /usr/lib/libc.so.6
> #1  0x00007ffff73596c0 in __GI__IO_file_underflow () from 
> /usr/lib/libc.so.6
> #2  0x00007ffff735a6ec in __GI__IO_default_xsgetn () from 
> /usr/lib/libc.so.6
> #3  0x00007ffff734e860 in fread () from /usr/lib/libc.so.6
> 
> It seems that fclose is blocking over a mutex, that I supposed has been 
> obtained in the popen thread in the fread call. I looked around at the 
> glibc code (genops.c and fileops.c) but haven't found anything obvious.
> 
> In case that might be relavant, the implementation is in the Lua 
> language and threads are managed by lua lanes.

i would suspect lua is the issue here.  if you could produce a program in C that 
reproduced the problem, that would help us a lot though ...
-mike

Attachment: signature.asc
Description: Digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]