-
Notifications
You must be signed in to change notification settings - Fork 27.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crash on startup on Android armv7 (Flutter 1.22.3) #80043
Comments
Hi @julianzur Can you please upgrade to the latest Unfortunately, you would need to use the latest
If the problem persists, can you please provide complete reproducible steps and updated |
Hi @TahaTesser |
If you can reproduce it then you best bet is to run it under crash from #80043 (comment) symbolized using symbols for
|
Thanks @mraleph. We'll try again with |
As @mraleph said, the top two frame don't make much sense and without a repro case, this issue isn't currently actionable. |
Here's a quick update: we've identified the commit that breaks armv7 for us. It introduces the emojis 0.9.3 package to our project. I'm currently working on a small reproducible case. But so far the minimal code I wrote does not seem to reproduce the crash. We'll keep on investigating in which scenario the |
@julianzur For issue related to Flutter itself, please provide a minimal reproducible code sample that does not use 3rd party plugin |
Based on my analysis this is most likely caused by the AOT backend patching an out-of-range relocation for a PC-relative call when handling backwards calls (calls to already emitted functions), instead of using a forward call through a trampoline. Assigning to @mkustermann |
One could you the following to reproduce the bug: // /tmp/test-gen.dart
import 'dart:io';
void main(List<String> args) async {
final out = File('/tmp/test.dart').openWrite();
// Note: everything is written into one line because otherwise gen_snapshot
// spends most of the time dealing with line number information
out.write(
''' @pragma('vm:never-inline') void f0(List<int> a) { a.add(1); } ''');
final N = 10000;
for (var i = 1; i <= N; i++) {
out.write(
''' @pragma('vm:never-inline') void f$i(List<int> a) { f0(a); f${i - 1}(a);''');
for (var j = 0; j < 100; j++) {
out.write('''f0([]);''');
}
out.write('''}''');
}
out.write('''void main() { f${N}([]); f0([]); print('ok'); }''');
await out.flush();
await out.close();
print('generated input file with ${N} methods');
}
|
I've uploaded a fix cl/195682 for this. |
… acount There was a missing check for whether a backwards call is out-of-range. The CL also removes leftover code related to [max_offset_into_target_] - which wasn't used. The intended use is already over approximated via [max_instructions_size_]. The CL makes the pc-relative call/tail-call distances pluggable so a newly added test can modify them for testing in-range/out-of-range forward/backwards calls. TEST=vm/cc/CodeRelocator_* Fixes flutter/flutter#80043 Change-Id: Id4bdb7176108b61235dafb7ffc125da4a2bf07fa Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195682 Commit-Queue: Martin Kustermann <kustermann@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
The patch has landed in the Dart VM. Per Ray, this will fixed in the next release. |
Merge-to-stable request is here dart-lang/sdk#45755 |
… acount There was a missing check for whether a backwards call is out-of-range. The CL also removes leftover code related to [max_offset_into_target_] - which wasn't used. The intended use is already over approximated via [max_instructions_size_]. The CL makes the pc-relative call/tail-call distances pluggable so a newly added test can modify them for testing in-range/out-of-range forward/backwards calls. TEST=vm/cc/CodeRelocator_* Fixes flutter/flutter#80043 Change-Id: Id4bdb7176108b61235dafb7ffc125da4a2bf07fa Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195682 Commit-Queue: Martin Kustermann <kustermann@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of |
Hi flutter community,
our app is currently crashing on armv7 devices with release and profile builds. It's running fine on all the other architectures and also with debug builds. We're using Flutter 1.22.3 to build the app.
First we saw the number of crashes increasing in the Google Play Console:
Unfortunately, we're still building with gradle 3.5.3, so we can't set the
android.defaultConfig.ndk.debugSymbolLevel
for now.But luckily we're able to reproduce the problem on the Android armv7 emulator (Android 7.1.1) where we can get much more detailed information about the crash from the tombstones:
@flutter-symbolizer-bot a1440ca392ca23e874a105c5f3248b495bd0e247 release arm
Here's some extra information:
--split-debug-info debug_info
, so we also have the debug symbols locallypc
value is different. This makes debugging following this guide quite difficult.Do you guys have any ideas what I could try next to find out what's causing the crash?
The text was updated successfully, but these errors were encountered: