I recently was helping a customer with an issue they were having with one of our products to convert spooled files to PDF (AFPTOOL).
After a few calls, they would get error returned from the tool. The actual error in the job log was:
Unable to open output PDF file. 0000003452
Error during TIFF to PDF conversion step.
Error Number (errno) 3452 means "Too many files open for this process." That means that there is something that isn't closing file descriptors properly.
This customer also was doing some home grown IFS file work and we thought it was possible there was an issue there. But in debugging we found the file descriptors returned from the open() API were not consistent. After a call to the QtmmSendMail API then next open would result in a file descriptor of one higher than was expected.
So it went something like this:
fd = open(file); //fd = 3
sendEmail(); //This calls the QtmmSendMail API
rc = close(fd); //rc = 0
fd = open(myNextFile); //fd = 4... this should be 3!!!
After a few spooled file conversions and sending of emails, we would eventually hit the errno 3452. Not caused by our software, but reported by our software. It turns out the QtmmSendMail API was the culprit.
A quick search and this APAR was found:
So again, if you're on V7R2 and have any applications that use the QtmmSendMail API, please make sure you have this PTF installed.
And also remember that if you're a MAILTOOL user and you are specifying SENDWITH(*MAILTOOL) you are using MAILTOOL Plus and this will not apply. This is because MAILTOOL Plus will totally bypass the IBM SMTP/MSF system using our own SMTP process for delivery.
This will only apply to any of our MAILTOOL customers if you are specifying SENDWITH(*IBMSMTP) which passes the email off to the IBM SMTP/MSF system for delivery, as well as other users that have home grown or 3rd party applications using the QtmmSendMail API.
I am using API QtmmSendMail to send HTML Email but getting an error 3452 - “Too many open files for this process.” Looks like the API is causing the issue and not closing the descriptors properly. We are at V7R3. The link you have shared for the PTF is saying not found. Any suggestion how can I fix this error? many thanks in advance.
I personally would review your code making sure any socket or file descriptor you open is closed. If you're 100% sure that you're not leaving any open then I would search for PTFs for your OS version, or give IBM a call to see if they have a solution.