An ABL application code sometimes executes C code from a third-party library, which can make any system calls within the PAS for OpenEdge agent process. A third-party library can use the pthread_sigmask() call to block signals for their own thread, including fatal signals. The blocking of fatal signals in a thread prevents the PAS for OpenEdge signal handler from handling them properly. Any fatal signal raised under such conditions, results in the PAS for OpenEdge agent process disappearing without a trace. This disappearance of the PAS for OpenEdge agent process can cause the following:
  • Long downtime and long effort for the technical support and engineering team to trace, understand, and resolve the error reported because of the disappearance of the agent process.
  • Corruption and shutting down of database when the PAS for OpenEdge agent process is attached to shared memory for a database connection and one of the threads is in critical section code for the database.

The -DisallowFatalSignalBlock parameter, which prevents pthread_sigmask() from blocking fatal signals, is effective for UNIX systems only and does not accept any arguments. When you use this parameter, the PAS for OpenEdge agent prevents calls to pthread_sigmask() from attempting to block fatal signals such as SIGSEGV, SIGBUS, SIGILL, and SIGFPE.

When an attempt is made to block any of these signals, the PAS for OpenEdge agent writes a message to the agent log file and the UNIX syslog.

The -DisallowFatalSignalBlock parameter enables the PAS for OpenEdge agent process to prevent the fatal signals from being blocked. When the PASOE agent's thread, which calls the pthread_sigmask(), receives a fatal signal, the PAS for OpenEdge agent processes the fatal signal through its signal handler in a regular manner.

You can dynamically update the -DisallowFatalSignalBlock property. Dynamic changes affect only the new agents that are started after this value is changed.

For more information about agent startup parameter, see "agentStartupParam" property in the ABL session manager and session pool topic of the Manage Progress Application Server (PAS) for OpenEdge guide.