-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Intermittent z/OS crash in libhealthenter.so when stopping #99
Comments
The problem was caused by ThreadPool::stopAll destructing the WorkerThread while it was still running in processLoop. This implicitly destructed the Semaphore which implicitly destructed its fields like name and led to undefined behavior which drove the crash. The solution is to comment out the setting of stopped=true in WorkerThread::stop. This function already sets running=false which will cause WorkerThread::processLoop to break the next time it comes back from the semaphore and then will set stopped=true at the end of WorkerThread::processLoop. I was able to consistently reproduce the problem before, but after commenting out stopped=true in WorkerThread::stop, I can no longer reproduce the problem. |
Created PR #100 |
An additional symptom of this in jdmpview will show something like the following as frames at the top of the crash stack (particularly the WorkerThread symbol):
|
…readPool destructing a WorkerThread while it's in processLoop
IPCS
ip verbx ledata 'nthreads(*)'
shows a crash inWorkerThread::processLoop
:Or
Semaphore::open
:The text was updated successfully, but these errors were encountered: