Originally Posted By: Kardafol
My suggestion would be to debug your script.
Generally, if mIRC crashes/etc, its a DLL.

Here are some hints on how to debug your script:

Add this to everyplace where you loop, call a DLL, deal with big files, etc.
Code:
if (%debug) {
  _debug $+([,$script,:,$scriptline,]) $+(%,var) = xxx
  ...
}

And an alias:
Code:
alias _debug {
if (!$window(@debug)) {
window -e @debug
}
echo @debug $timestamp $1-
}

This way you can just to /set %debug 1 and it does. You can also do "_debug Matching wildcards.." "_debug $v1 iswm $v2 $+ : True/False" "_debug Done matching wildcards." to make it easier to debug.

Make it easy to read the code, use ()s in if statements, and {}s after statements.

If it was a loop in one alias or event, control break would stop it. Since it doesnt, it must be some loop across aliases. Alias 1 calling alias 2, which calls alias 1 again, maybe alot more script pieces along what I called 'execution path'.
So putting something 'everywhere I loop' isn't relevant in this situation, it's likely a loop that isn't ment to loop.

It occurs sometimes and I have no single clue regarding the circumstances. The script reports already alot, but only for the higher-level stuff and somewhat more in case failures.
But when I check the scripts logs, there's just nothing on that level. For example, I log whois results which are triggered by join, parts etc, there is nothing.
Adding debug echoes all over the place is like a last option for me, the thing is over 17000 lines and like 500 aliases.

I was hoping the process info, the addresses, were giving a clue on where to start searching. What all causes a new thread in mIRC?