Accidentally I spent most of today tracing "stack level to deep"
errors in my application. The log showed that the overflow occurred
when workitem#dup was called by the engine. Finally I discovered the
cause of the problem.

The result of the block used by a BlockParticipant is stored as
attribute in the workitem. If the result of the last expression in the
block is a workitem, then a workitem is stored in a workitem. Since
the workitem#dup (via OpenWFE.fulldup) makes use of recursion, this
results in a stack overflow.

Maybe openwferu should protect itself against users which return a
workitem from a block. To reproduce the problem, one only needs to use
the following participant:

engine.register_participant("crash_me") do |workitem|
    puts "one last message..."
    workitem
end







--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"OpenWFEru users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/openwferu-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to