Closed Bug 1168520 Opened 9 years ago Closed 7 years ago

mozalloc_abort: abort() on Android 2.3 low-memory device

Categories

(Firefox Build System :: Android Studio and Gradle Integration, defect)

ARM
Android
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INCOMPLETE

People

(Reporter: roman, Unassigned)

Details

Attachments

(1 file)

Attached file crash.log
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0 Iceweasel/33.1
Build ID: 20141111034249
Firefox for Android

Steps to reproduce:

I try to run Fennec / GeckoViewExample on Android 2.3.7 ARMv6 device with 384Mb RAM. 

Fennec was compiled from hg trunk on 2015-05-26 with the following .mozconfig:
----
ac_add_options --target=arm-linux-androideabi
ac_add_options --with-arch=armv5te # I'm not sure that armv5te is correct, but I have SIGILL on arch=armv6

#mk_add_options MOZ_OBJDIR=./obj-i386-linux-androideabi/
#ac_add_options --target=i386-linux-android

ac_add_options --enable-jemalloc # doesn't affect behaviour

ac_add_options --with-android-min-sdk=9
ac_add_options --with-android-max-sdk=10
ac_add_options --enable-android-resource-constrained
ac_add_options --disable-android-include-fonts
----

Device information:
----
HTC Aria (Liberty), Android 2.3.3 (CM)

Processor       : ARMv6-compatible processor rev 5 (v6l)
BogoMIPS        : 245.61
Features        : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 6TEJ
CPU variant     : 0x1
CPU part        : 0xb36

MemTotal:         298028 kB
----


The produced apk works on 4.x device with more RAM.
May be this 2.3 device is unlucky, but I want to get working app for as much devices as possible.

I can try to debug Java / C++ code, just give me an idea where to start.



Actual results:

D/dalvikvm(  717): VFY: dead code 0x0008-000c in Lorg/mozilla/gecko/RestrictedProfiles;.getRestrictions (Landroid/content/Context;)Landroid/os/Bundle;         
E/GeckoCrashHandler(  717): >>> REPORTING UNCAUGHT EXCEPTION FROM THREAD 17 ("Gecko")                                                                          
E/GeckoCrashHandler(  717): org.mozilla.gecko.mozglue.GeckoLoader$AbortException: abort() called from :0x4cd7f060 ()                                           
E/GeckoCrashHandler(  717):     at org.mozilla.gecko.mozglue.GeckoLoader.abort(GeckoLoader.java:554)                                                           
E/GeckoCrashHandler(  717):     at org.mozilla.gecko.mozglue.GeckoLoader.loadGeckoLibsNative(Native Method)                                                    
E/GeckoCrashHandler(  717):     at org.mozilla.gecko.mozglue.GeckoLoader.loadGeckoLibsNative(Native Method)                                                    
E/GeckoCrashHandler(  717):     at org.mozilla.gecko.mozglue.GeckoLoader.loadGeckoLibs(GeckoLoader.java:525)                                                   
E/GeckoCrashHandler(  717):     at org.mozilla.gecko.GeckoThread.initGeckoEnvironment(GeckoThread.java:115)                                                    
E/GeckoCrashHandler(  717):     at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:167)   

See crash.log
APK is here (is to large to attach):
https://drive.google.com/open?id=0Bzkx6IMnhh6Ifm92SzAwNlhBY0lxYUtfc1RKVzI0V05IQnpOT1AwV0hkQTBNQjV1SkpvOWc&authuser=0   /2015-05-26/fennec-41.0a1.en-US.android-arm.apk
OS: Unspecified → Android
Hardware: Unspecified → ARM
Component: Untriaged → General
Product: Firefox → Firefox for Android
ARMv6 is no longer a supported target for Firefox for Android as of Firefox 33.

However it might be possible to still use: ac_add_options --with-arch=armv6
Component: General → Build Config & IDE Support
Yes, I know that armv6 is no longer supported. I tried to use --with-arch=armv6, but I got SIGILL on startup. BTW, What's the difference between -march=armv6 and -march=armv5te in GCC? I see that Android NDK uses armv5te..

I can try to re-compile with armv6 and check again.
I also tried to enable/disable jemalloc, but this didn't help.

Is it OK that allocator calls abort() on out of memory?
It's very likely that parts of mozglue or libxul no longer work correctly on ARMv6; because it's not a supported target, we don't notice when we break things, and we don't really mind -- the point of declaring that we don't support an architecture is to avoid having to do the work of maintaining it.

If you're willing (as you mention) to do the digging and write and test a patch, I expect that we'd accept it if it's not invasive.

Start here: mozglue/android/APKOpen.cpp, loadGeckoLibsNative. You should be able to attach a debugger:

https://wiki.mozilla.org/Mobile/Fennec/Android/GDB
Android 2 is no longer supported.
Status: UNCONFIRMED → RESOLVED
Closed: 7 years ago
Resolution: --- → INCOMPLETE
Product: Firefox for Android → Firefox Build System
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: