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
Mac_arm64_ios hot_mode_dev_cycle_ios__benchmark errors on hot restart/hot reload #142305
Comments
|
fyi @godofredoc This is one of the tests you added to run on arm64 (it was previously only running on x64): #141910. |
@bkonyi I was told you might have some insight into this or would know who might have insight into this |
I'm not 100% sure without digging into the code, but it looks like we're trying to invoke a service extension on an isolate that no longer exists (that would result in a |
@vashworth looks like this could potentially be an issue with the test, can you or somebody from the Flutter team investigate and confirm that. |
I don't believe this is an issue with the test. The same test runs successfully on other platforms such as linux, windows, android. It also runs successfully on iOS devices on x86 mac bots. It only seems to fail on iOS device on arm64 bots. |
//cc @bkonyi we probably need to investigate further |
@vashworth is it possible to get a local reproduction of this on an iOS arm64 device so we can debug the issue. |
Unfortunately it does not happen consistently - seems to happen 1-2 times every 50 builds. If you want to run the test locally, you can run
If you're wanting specific logs or information, perhaps we can get it uploaded through CI - let me know |
So I'm not sure I'll be able to reproduce this since I'm still using an Intel MacBook. However, there's a couple of things in the logs that are concerning. First of all, there's this output on stderr:
This happens between Afterwards, we accept the compilation and attempt to create the new isolate, where we see the following errors from the engine:
It looks like the kernel that was sent to the device is invalid, since "Indicated size is invalid" is reported when the kernel loader finds a program file start index that's less than 0. This results in us being unable to start the new isolate with the updated kernel. We then see the stack trace from I think we need to identify where the shelf error is being output to figure out what's going on here. My gut tells me that something's corrupting the kernel being generated by the compilation server, but I'm not 100% sure. |
@vashworth can you try passing |
Sorry for the delay, I added the |
Sounds good. If that fixes the crash, we'll want to add some logging in DDS to try and figure out why we're seeing this. |
Looks like it's still crashing, but the error is a little different
|
Thanks for the update, it's good to know this isn't being caused by weirdness in DDS. Digging through DevFS code in Maybe @brianquinlan will have some idea as to how we can try and reproduce this? |
//cc @brianquinlan |
I don't think that there is enough information here to diagnose this. @vashworth is it possible to add additional diagnostics to flutter_tools ? |
Some of the error logs implicate this code: This snippet, in particular, seems a bit suspicious to me: final HttpClientResponse response = await request.close().timeout(
const Duration(seconds: 60));
response.listen((_) {},
onError: (dynamic error) {
_logger.printTrace('error: $error');
},
cancelOnError: true,
); So we are:
In the logs on #142305 (comment), we have:
So we are print an error because we disconnected to the remote but we discard the error, which means that the retry logic is not invoked. Maybe the response handling code should look like: final HttpClientResponse response = await request.close().timeout(
const Duration(seconds: 60));
if (response.statusCode != 200) {
throw new Exception('Excepted 200 response from DevFS, got ${response.statusCode}');
}
await response.drain(); It is possible that the remote isn't doing the right thing if a disconnect happens before the entire response body is transmitted. |
//cc @christopherfujino |
Any updates on this ? |
Removed dependency: dart, as it looks like this is a tool bug. This is not currently assigned, however we will probably need to fix this eventually--when we do, we should try the change proposed in: #142305 (comment) |
https://ci.chromium.org/ui/p/flutter/builders/staging/Mac_arm64_ios%20hot_mode_dev_cycle_ios__benchmark/44/overview
https://ci.chromium.org/ui/p/flutter/builders/staging/Mac_arm64_ios%20hot_mode_dev_cycle_ios__benchmark/57/overview
https://ci.chromium.org/ui/p/flutter/builders/staging/Mac_arm64_ios%20hot_mode_dev_cycle_ios__benchmark/27/overview
https://ci.chromium.org/ui/p/flutter/builders/staging/Mac_arm64_ios%20hot_mode_dev_cycle_ios__benchmark/23/overview
https://ci.chromium.org/ui/p/flutter/builders/staging/Mac_arm64_ios%20hot_mode_dev_cycle_ios__benchmark/12/overview
The text was updated successfully, but these errors were encountered: