Skip to content
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

another VM crash (compiler related) #30

Open
GoogleCodeExporter opened this issue Sep 8, 2015 · 2 comments
Open

another VM crash (compiler related) #30

GoogleCodeExporter opened this issue Sep 8, 2015 · 2 comments

Comments

@GoogleCodeExporter
Copy link


"Random test" crashes (with an access violation) deterministically
when the compiler is enabled. A problem with floats ?

Original issue reported on code.google.com by [email protected] on 25 Mar 2007 at 11:07

@GoogleCodeExporter
Copy link
Author

Update: it doesn't crash when the C++ code is compiled without optimisations.

Original comment by [email protected] on 19 Apr 2007 at 8:50

@GoogleCodeExporter
Copy link
Author

Fixed.

compiler optimisation has more aggressive allocation, and uses the persistence 
of EBX
accross pascal function calls. however some primitives don't abide to this
convention. This lead to crashes in the strongtalk compiler: primitive calls for
constant propagation corrupted local variables. I added temporary EBX backup in
primitive_desc::eval and a warning message for primitives that change EBX. It 
would
probably be judicious to make sure all primitives preserve EBX. 64bit floating 
point
(doubleOop) arithmetic primitives are a good exemple of primitives that 
triggered the
bug.

On a sidenote, a similar issue arises with call_delta (the entry point into
strongtalk code). The old assembly code didn't save ESI/EDI (required by C ABI) 
- The
catch here is that saving these registers on stack will crash 
scavenge/mark-sweep on
entry frames. A temporary solution is to ignore the entry frames stacks 
(there's no
oops in them anyway)

Original comment by [email protected] on 30 Apr 2007 at 7:28

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant