[PD-dev] PD bails, thread continues happily?
Mathieu Bouchard
matju at artengine.ca
Sun Apr 5 01:30:43 CEST 2009
On Sat, 28 Mar 2009, B. Bogart wrote:
> I did a test today running a over 10,000 image captures using the
> "captureimages" method of [gphoto]. Everything seems to work, but the PD
> counter (based on bangs sent from the second thread) stopped at 2,000
> and PD became largely unresponsive.
I don't know what your problem is, but i found a few things: you are not
checking whether the open() works, so, you rely on the next function to do
it for you, which means that you lose the error message given by
strerror(errno). And then when there's an error after that, you don't
close(fd) by yourself, even though you do it when everything does work.
Note that you can't have more than about 1000 active fds at a time with
Linux (it may be distro-dependent). Check what's the current limit on your
system (2000?) using "ulimit -n" and then set that to a lower value like
"ulimit -n 300" and try again, to see whether it has anything to do with
filehandles. if it does, it's probably not because of one of the two bugs
above, if I can suppose that the 2000 tries reported above do not end with
an error.
Find the process ID of the second thread. let's say it's 12345. then do
"ls -l /proc/12345/fd" to list all open-files of that process, and see if
there is anything abnormal. If you have many "second threads" then...
you'd need to look for each of them, I guess. Or are the fds shared among
all threads?
> I was able to stop the thread with the PD method, so PD was not totally
> dead, but I was unable to send any additional commands to the camera,
> nor open another patch, or anything useful.
This sounds even more like "too many open files". Did that message appear
in the console? It would also imply that the filehandle table is shared.
_ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec
More information about the Pd-dev
mailing list