Bizarre multithread open/close problem

Date: Mon Jul 30 2001 - 16:09:29 EST

I'm not sure if this is a bug or not but my
coworker has a wierd one.

He has 2 threads, main and helper.

f=open(/dev/brcmrec) does some work and then

spawns helper:

helper spins forever doing various ioctls, read
and writes on f which was opened in main. Every
time through it looks at a "amIDone" flag which is
set by main. pthreads are the threads.

Then at some point main wants to end helper and
close f. Main sets "amIDone" which tells helper
to terminate and then successfully closes f.

Now here is the problem, our brcmrec driver has a
close() function which isn't getting called when
main does the close, at least not all of the
We're beginning to think that if the helper thread
is in the middle of an ioctl or something then the
close works but it doesn't call the close on the

I don't even know what kind of help to ask for
here, so feel free to poke at this any ways you
like. I guess the bothersome part is that we have
a thread that doesn an open (did I mention it was
an exclusive open?) and then spawns a thread and
then does a close and we can't reopen the device
and the close part of our driver is never called.

Any ideas or hints?

Ian Nelson
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Tue Jul 31 2001 - 21:00:46 EST