-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Bring up DartDev isolate from kernel instead of an AppJIT snapshot #42804
Comments
This is a bit hard to understand; can you explain the issue in a bit more detail? |
An example from #42958 where passing
Basically, AppJIT snapshots require that certain VM flags used to generate the snapshot must also be set identically in the VM the snapshot is being loaded into; if they don't match, the snapshot won't be loaded. We have the same issue when we load the kernel isolate, but we fall back to using the kernel snapshot if the AppJIT snapshot fails to load. |
So here specifically the VM is running with sound null safety and thus cannot load an AppJit snapshot that has unsound null safety? Why is that? I understand that other "low level" VM flags can affect the snapshot format, but why does something like null safety impact it? |
I'm not 100% confident (@a-siva, please correct me if I'm wrong) but I believe that what determines whether or not a flag is compatible with a snapshot is if the flag changes behavior or memory layout in an incompatible way. For the example above we're trying to load a snapshot which was not generated with strong null safety enabled into a VM which expects strong null safety which would break assumptions made by the VM. |
app JIT snapshots contains code. |
Using a snapshot to bring up the DartDev isolate can cause a failure if incompatible VM flags are provided. We should change to using a kernel file instead to avoid these incompatibilities.
The text was updated successfully, but these errors were encountered: