| Message |
Your test is setting up a race condition, with re-entrant behaviour that is not really designed to be handled.
This modified version, I had sitting there for a while (with the message box up) without a crash:
function OnPluginBroadcast (msg, id, name, text)
if id == "3e7dedbe37e44942dd46d264" then -- the Aardwolf GMCP handler
if not foo then
foo = true
utils.msgbox("Test!")
foo = false
end -- if
end -- level info
end
Your test, if you leave the message box up, interrupts the processing of the incoming packet by displaying the message box. So that packet is partly processed. Then while the message box is up, a new packet arrives, and if that also causes a plugin broadcast, we have now re-entered utils.msgbox. When these eventually get dismissed (or maybe without dismissing them) as the stack unwinds, things get out of kilter.
Another possible explanation is that, while the message box is open, Windows' message queue starts filling up (eg. with incoming comms messages) and some of them get discarded, leading to decompression errors.
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | top |
|