When I found the pipe() was leaking file descriptors, that fixed these errors, but there is another error.
Once in a while, the code gets a 500 http response. It should probably re-try those. However, when it gets that error, the excpetion catching mechanism will leak pthreads data because it does not call pthread_join on all the threads.
Here are the errors from a recent run:
Old info, now no longer true:
There are some Data Transfer Errors when reading data from S3. They fall into four groups:
Couldn't resolve host name
Couldn't connect to server
Problem with the SSL CA cert (path? access rights?)
SSL connect error
And most likely originate here:
Implemented code to clean up (join with) outstanding threads when an exception is thrown.
Next step, must re-try requests that return 500 responses.
Fixed. Re-tring the HTTP 500’s it the ticket