-
Notifications
You must be signed in to change notification settings - Fork 4
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
Inconsistent record/replay #3
Comments
Hi, thanks for your interest. Even though this repository is currently public there does not yet exist a stable release yet, so bugs like the one you mentioned can occur frequently. We are currently actively developing on this tool and have a few things on our bucket lists. I will keep you updated on the fixing of this bug. |
Thanks for the report! I will try to look into this this week. |
Hi @aoli-al, can you provide a repository that contains the code example you provided, making it easier to reproduce the problem? I think I can try to make it somehow work with the code you provided but I think with a runnable code repository it would make a debugging process way simpler. |
Yes, I've created #4 to add this test case. |
Thanks for the PR. It would best to reduce this test case to the core issue and then create a minimal node test-case that reproduces the bug. Once we figure out the core issue, we can fix the bug. Offline test cases are intended to test the overall wasm-r3 pipeline not the record and replay logic. |
Hmm but I think this case is good enough. I'll take a look at the offline test case and make a node case out of it. After that we can decide whether we should keep the offline test or not. |
Yes, this is the minimum example I can get. The core issue is when you call While calling
The correct version of instance.exports.__wbindgen_add_to_stack_pointer(-16)
instance.exports.__wbindgen_malloc(5,1)
new Uint8Array(instance.exports.memory.buffer)[1114120] = 72
new Uint8Array(instance.exports.memory.buffer)[1114121] = 101
new Uint8Array(instance.exports.memory.buffer)[1114122] = 108
new Uint8Array(instance.exports.memory.buffer)[1114123] = 108
new Uint8Array(instance.exports.memory.buffer)[1114124] = 111
instance.exports.greet(1048560,1114120,5)
instance.exports.__wbindgen_add_to_stack_pointer(16)
instance.exports.__wbindgen_free(1114168,17,1)
instance.exports.__wbindgen_add_to_stack_pointer(-16)
instance.exports.__wbindgen_malloc(5,1)
new Uint8Array(instance.exports.memory.buffer)[1114120] = 87
new Uint8Array(instance.exports.memory.buffer)[1114121] = 111
new Uint8Array(instance.exports.memory.buffer)[1114122] = 114
new Uint8Array(instance.exports.memory.buffer)[1114123] = 108
new Uint8Array(instance.exports.memory.buffer)[1114124] = 100
instance.exports.greet(1048560,1114120,5)
instance.exports.__wbindgen_add_to_stack_pointer(16)
instance.exports.__wbindgen_free(1114168,17,1) I think the main issue here is how to associate correct bytes to the imported function calls. |
I think with kind of logic in commit 4f05d7a , this solves this case. Node tests and given case is passing but one offline test and some of the online tests are passing due to some other reasons I think. Will try to solve them after the vacation and write a detailed writeup on this. |
Hi developers,
Great tool! I've tried your tool with following code but got inconsistent traces.
I got following traces:
If seems that the generator put the second memory load
world
in the wrong location.The text was updated successfully, but these errors were encountered: