Closed Bug 1085475 Opened 7 years ago Closed 7 years ago

[10.10] FF crashes using behind-window vibrancy on Yosemite in 32-bit mode

Categories

(Core :: Widget: Cocoa, defect)

x86
macOS
defect
Not set
critical

Tracking

()

VERIFIED FIXED
mozilla36
Tracking Status
firefox33 --- wontfix
firefox34 + verified
firefox35 + verified
firefox36 --- verified

People

(Reporter: smichaud, Assigned: mstange)

References

Details

(Keywords: crash, topcrash-mac)

Crash Data

Attachments

(2 files)

When run in 32-bit mode, Firefox (34 branch and up) always crashes on Yosemite whenever behind-window vibrancy is used.  You can make this happen by viewing the bookmarks or history sidebar.

I tested in today's mozilla-central nightly, and haven't yet confirmed the regression range.  But I'm almost certain about it.

STR:

1) Ctrl-click (or right-click) on the Firefox distro and choose Get Info.
2) Make sure Open in 32-bit mode is checked.
3) Run Firefox
3) Choose View : Sidebar : Bookmarks or View : Sidebar : History.
4) Crash.
Crash Signature: [@ libobjc.A.dylib@0x50df ]
Do you want this, Markus, or shall I take it?
After this line:
> Class EffectViewClass = objc_allocateClassPair(NSVisualEffectViewClass, "EffectView", 0);
sending any message to EffectViewClass (like "alloc") results in a crash. This seems to happen regardless of whether we subclass NSVisualEffectView or any other class. In fact, these two lines alone cause a crash in 32 bit mode:

> Class CreatedClass = objc_allocateClassPair([NSObject class], "MyClassName", 0);
> [CreatedClass alloc];

It looks like objc_allocateClassPair just doesn't work on 32 bit. A web search didn't turn up any useful information about this problem, apart from this:
https://github.com/CodaFi/C-Macs/issues/1 which doesn't really help.
And we can't use class_createInstance because that doesn't allow us to subclass NSVisualEffectView.
So let's just turn off vibrancy in 32 bit mode.
Assignee: nobody → mstange
Status: NEW → ASSIGNED
Attachment #8508704 - Flags: review?(smichaud)
Comment on attachment 8508704 [details] [diff] [review]
disable vibrancy in 32 bit mode

This is fine with me.

The only thing we still really need 32-bit mode for is some 32-bit only plugins (notably Silverlight).  Otherwise we don't want it to crash, of course.  But I don't think non-plugin 32-bit mode deserves the same level of support as non-plugin 64-bit mode -- especially if it would require a lot of work, as here.
Attachment #8508704 - Flags: review?(smichaud) → review+
Comment on attachment 8508704 [details] [diff] [review]
disable vibrancy in 32 bit mode

Markus, are you going to land this? :-)
Comment on attachment 8508704 [details] [diff] [review]
disable vibrancy in 32 bit mode

Approval Request Comment
[Feature/regressing bug #]: bug 1051522
[User impact if declined]: crash on 10.10 in 32-bit mode
[Describe test coverage new/current, TBPL]: none, running the browser in 32-bit mode is not really a supported configuration
[Risks and why]: very low risk, safe patch
[String/UUID change made/needed]: none
Attachment #8508704 - Flags: approval-mozilla-beta?
Attachment #8508704 - Flags: approval-mozilla-aurora?
https://hg.mozilla.org/mozilla-central/rev/8380f4b99047
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla36
Comment on attachment 8508704 [details] [diff] [review]
disable vibrancy in 32 bit mode

Beta+
Aurora+
Attachment #8508704 - Flags: approval-mozilla-beta?
Attachment #8508704 - Flags: approval-mozilla-beta+
Attachment #8508704 - Flags: approval-mozilla-aurora?
Attachment #8508704 - Flags: approval-mozilla-aurora+
Flags: qe-verify+
QA Contact: catalin.varga
Verified as fixed using:

FF 34.04
FF 35 Aurora Build Id: 20141028004002
FF 36 Nightly Build Id: 20141028030204
OS: Mac Os X 10.10
You need to log in before you can comment on or make changes to this bug.