Software Archive
Read-only legacy content
17061 Discussions

Cilk assertion when throwing an exception in cilk worker thread

Daniel_Faken
Beginner
481 Views
Hi,

If I do a simple throw std::runtime_error("test exception") in a function at the bottom of bunch of recursive functions using cilk_for, I get a crash with this error:

.\\sched.c:1189: cilk assertion failed: sf->call_parent == 0

If I attach to the process with Visual Studio before the exception, it will catch it (as "first chance"), but the exception is apparently having trouble being propogated as described in the docs, which say:
If an exception is thrown and not caught in a spawned child, then that exception is rethrown in the parent at the next sync point.

In my case, the exception *should* be caught at a much higher stack frame. Am I doing something wrong?
I see the release note about MS SEH, but this is just standard C++, compiled with /EHsc.

thanks,
Daniel
0 Kudos
3 Replies
Pablo_H_Intel
Employee
481 Views
This is a known bug with cilk_for. We're sorry that you ran into it. We're working on a fix.
-Pablo
0 Kudos
Daniel_Faken
Beginner
481 Views
ok, thank you.
0 Kudos
Brandon_H_Intel
Employee
481 Views
Hi Daniel,

This should be fixed. Our defect database indicates this fix is in update 3, but update 2 seems to fix this as well.
0 Kudos
Reply