Closed Bug 473161 Opened 17 years ago Closed 17 years ago

Bug 373701 regressed on trunk and 1.9.1

Categories

(Core :: Graphics: ImageLib, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla1.9.1b3

People

(Reporter: bzbarsky, Assigned: joe)

References

(Depends on 1 open bug)

Details

(Keywords: fixed1.9.1, regression)

Attachments

(1 file, 1 obsolete file)

The patch that ended up landing for bug 89419 is wrong. In particular, this part of the patch: 1.60 - if (mRequest && mLoading) 1.61 - mRequest->Cancel(aStatus); 1.62 + if (mChannel && mLoading) 1.63 + mChannel->Cancel(aStatus); is wrong, because it cancels the wrong thing (the part channel, not the underlying multipart channel). I really should have pushed harder to clean up the mRequest/mChannel thing so that confusion like this wouldn't arise. :( This needs to block 1.9.1, in my opinion. And we desperately need a regression test for this if someone can figure out how to write one.
Flags: blocking1.9.1?
Blocks: 89419
OS: Mac OS X → All
Hardware: x86 → All
Flags: blocking1.9.1? → blocking1.9.1+
It's still necessary to cancel mChannel in CancelAndAbort() for the same reasons that came up in bug 89419, but we should cancel mRequest in Cancel() because, if we're calling Cancel(), we've initialized properly. Just cancelling mRequest will work because, on redirect, the new channel will be added to the old channel's load group. It's not currently possible to write a test for webcams, but I've filed bug 475108 on it anyways.
Attachment #358505 - Flags: superreview?
Attachment #358505 - Flags: review?(bzbarsky)
Attachment #358505 - Flags: superreview? → superreview?(vladimir)
Attachment #358505 - Flags: superreview?(vladimir) → superreview+
I'm a little confused. Why do we need to cancel the channel in this case? If the channel is not in the loadgroup, that means its AsyncOpen failed, right? In that case there's nothing to cancel... Why is that call needed at all?
That is a good question, and it turns out that there is no reason to cancel the channel instead of the request. I was misled down that path when debugging the leaks in bug 89419, and I made incremental changes until I fixed the leaks, never realizing that the Cancel() call didn't matter. So this simply reverts to the correct Cancel().
Attachment #358505 - Attachment is obsolete: true
Attachment #358891 - Flags: superreview?(vladimir)
Attachment #358891 - Flags: review?(bzbarsky)
Attachment #358505 - Flags: review?(bzbarsky)
Attachment #358891 - Flags: review?(bzbarsky) → review+
Attachment #358891 - Flags: superreview?(vladimir) → superreview+
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Backed out because of leaks.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Status: REOPENED → RESOLVED
Closed: 17 years ago17 years ago
Resolution: --- → FIXED
Keywords: fixed1.9.1
Target Milestone: --- → mozilla1.9.1b3
I assume we don't need this fixed on 1.9.0 because Joe already caught the problem with bug 89419 in bug 355126 comment 65? (nominating wanted1.9.0.x as a reminder that I need to check back for an answer)
Blocks: 373701
Depends on: 475108
Flags: wanted1.9.0.x?
Keywords: regression
We don't need this because the code that caused this bug didn't land on 1.9.0 at all. We took a much simpler and safer fix for bug 89419 there instead. At least that's how things work as I recall. Joe, can you confirm?
Right. There was drift both in the underlying code from 1.9.0->1.9.1 and in the patch I eventually checked in. Therefore, this bug doesn't apply to the 1.9.0 branch.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: