openframeworks / openframeworks/openFrameworks

ofThread : short lived threads can cause uncaught exceptions

Open
#5,262 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
10.4k
Forks
2.6k
Avg merge
1d 21h
Merged PRs (30d)
9

Description

I am getting sporadic crashes on very short lived threads; This code is enough to reproduce the issue; at about one crash per minute. I am seeing this happen on OS X 10.11.

class MyThread : public ofThread{
public:
    void threadedFunction(){}
};

void ofApp::update(){
    MyThread* t = new MyThread();
    t->startThread();
}

It seems that every now and then the thread fails to detach() and throws an exception.

https://github.com/openframeworks/openFrameworks/blob/88545f1e54c928830eae568b98e816df8170e298/libs/openFrameworks/utils/ofThread.cpp#L172

Wrapping the call in a try/catch keeps the app running.

try{
    thread.detach();
}catch(...){
    ofLogFatalError("ofThreadErrorLogger::exception") << "failed to detach!";
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with libs/openFrameworks/utils/ofThread.cpp around line 172 and trace the detach call from startThread() for the short-lived MyThread reproduction. Run the provided OS X example and observe the intermittent exception; done means the reproduction no longer causes an uncaught exception while preserving normal thread cleanup.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.