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
-~----------~----~----~----~------~----~------~--~---