-
Notifications
You must be signed in to change notification settings - Fork 48
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
Investigate deterministic QEMU behavior #307
Comments
Well, the replay files aren't small. Running The replays are qemu version sensitive, thus if Travis provided us with a recoding for a test failure, we would need to debug it using the exact same qemu version as installed on Travis. That's not a big problem though, we can install multiple qemu versions locally, or deploy a particluar new qemu version onto Travis just as we do with the toolchain. The problem might be with getting these files back from Travis. 10MB is far too much to push via raw output. Travis supports uploading result files to S3, but we would need to pay for AWS storage. Maybe it would be possible to have Travis upload results to the mimiker server, but we'd need to figure out a way of doing it securely so that nobody else can push junk onto the server. |
It seems to.... Kinda. With There is a problem with replaying though. It seems to be supported, but something's off and the kernel gets stuck in |
That's an awesome finding you've made!
Knowing how deeply device emulation is broken in OVPsim - more than happily ;-) |
While debugging #328 I've met with a lot of random synchronization bugs that were unreproducible. Out of curiosity, I added I'd say we can safely enable |
I'm in favour of enabling the flag in |
There is one detail that worries me, though. Making QEMU deterministic makes it 1000x less likely to trigger synchronization bugs. See #328, as soon as I enabled This is related to why we had such a hard time finding bugs on OVPsim - it's because of it's cycle-exact nature. I don't know know whether the reduced chance of sync problems is a bad thing (will cause us to detect less problems), or actually a benefit (QEMU default chaotic execution is unrepresentative of hardware, and it triggers buggy scenarios that never would happen on a real machine). I don't want to diminish Travis' capability of bug-finding by enabling Another observation I have is that Travis uses QEMU 2.0. When testing #328 locally with the same version of QEMU I observed no problems. However, switching to a recent QEMU 2.8.1 the |
I've stumbled upon:
http://wiki.qemu.org/index.php/Features/record-replay
Summary:
This feature is very interesting for us! Chances are it could help us drop OVPsim entirely. It does need a closer look first. Some questions that need answering:
Additional documentation can be found here:
https://github.com/qemu/qemu/blob/master/docs/replay.txt
@cahirwpz: Suppose the answer to all questions above is "Perfect for our needs". Would you then consider dropping support for OVPsim as a viable option? If so, then this task is probably of a high priority.
EDIT: Also:
6. Do we even need recording? Using
-icount shift=N
might be enough to enable deterministic behavior.The text was updated successfully, but these errors were encountered: