Closed
Bug 269739
Opened 20 years ago
Closed 18 years ago
recursive command aliases cause slow/freeze/crash
Categories
(Other Applications :: ChatZilla, defect)
Other Applications
ChatZilla
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: michael.cordover, Assigned: bugzilla-mozilla-20000923)
Details
(Whiteboard: [cz-0.9.75])
Attachments
(1 file)
|
4.47 KB,
patch
|
samuel
:
review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0 Command aliases can refer to themselves, intially causing a slowdown, as infinite loops tend to do. The "a script is taking a long time - discontinue it?" dialogue is displayed after a while which allows the command to be terminated, although responsiveness of computer is already in a state where a freeze of Firefox has been known to happen. Reproducible: Always Steps to Reproduce: 1. Write a recursive command alias (e.g. back=back;away;nick mjec) 2. Run it (i.e. type /back) Actual Results: Computer response slows down, Chatzilla stops responding. Eventually script can be terminated by "this script is taking a long time" dialogue. In some cases browser stops responding altogether, sometimes (though generally only with excessive other CPU/RAM use) system crashes. Hey, it's Windows. Expected Results: Not allowed the command to run (e.g. with message "Recursive command aliases create infinite loops and they are a Bad Thing(tm); /back not run"). Chatzilla /does/ say that it doesn't like the command but continues running it anyway :/.
Updated•20 years ago
|
Product: Core → Other Applications
Updated•20 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
| Assignee | ||
Comment 1•20 years ago
|
||
There are a couple of ways I can see of solving this: - check the call stack when running a command to see if we're recursing - simply count the recurse depth in a command manager variable - mark the commands themselves as 'running' temporarily The last one seems good, but we need to allow for at least some controlled recursion: the /away or /back commands when run on the client view will call themselves for each network.
| Assignee | ||
Updated•19 years ago
|
OS: Windows XP → All
Hardware: PC → All
Comment 2•19 years ago
|
||
(In reply to comment #1) > - mark the commands themselves as 'running' temporarily > > The last one seems good, but we need to allow for at least some controlled > recursion: the /away or /back commands when run on the client view will call > themselves for each network. I like this one, but I think it would be safe to make it only apply to aliases? That way the controlled recursion of those commands is no problem. It would already catch the alias recursion in the act, and if the built-in commands recurse badly, then something much worse is going on (and bugs should be filed & fixed).
Comment 3•19 years ago
|
||
I think option two is the way to go. Have dispatch() increment something on the command manager when it starts and decrement on the way out. If the count ever gets higher than, say, commandManager.maxDispatchDepth, then throw an exception.
| Assignee | ||
Updated•18 years ago
|
Assignee: rginda → silver
| Assignee | ||
Updated•18 years ago
|
Status: NEW → ASSIGNED
| Assignee | ||
Comment 4•18 years ago
|
||
This took a little more magic that I had expected, due to the fact that displaying a message requires the command create-tab-for-view to run, so I had to make it unwind the entire stack before displaying the message at the end. It works, though, and the break when unwinding means that any aliases it is in the middle of will NOT run the rest of their code - this means it effectively kills the execution, which I think is probably the best solution.
Attachment #227895 -
Flags: review?(samuel)
Updated•18 years ago
|
Attachment #227895 -
Flags: review?(samuel) → review+
| Assignee | ||
Comment 5•18 years ago
|
||
Checked in --> FIXED.
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Whiteboard: [cz-0.9.75]
You need to log in
before you can comment on or make changes to this bug.
Description
•