tcg bug master / 4.0.0 v8 operation >>> and |=

Bug #1832281 reported by manuel baesler
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

vm guest is linux, executed with tcg
running this Node.js snippet leads to

$ node
> a = undefined
undefined
> a >>> 0
4294967295

host node
$ node
> a = undefined
undefined
> a >>> 0
0

same with |=

node
Welcome to Node.js v12.4.0.
Type ".help" for more information.
> let buffer
undefined
> buffer |= 0
0

vm with tcg:

$ ./out/Release/node --version
v12.4.0
./out/Release/node -e "let buffer; buffer |= 0; console.log(buffer);"
-1

vm guest is debian x86_64 latest release
vm guest is started with ./x86_64-softmmu/qemu-system-x86_64 -vnc :0 -cdrom debian-9.9.0-amd64-netinst.iso -m 4G -smp cores=6,threads=1,sockets=1 -nic user,hostfwd=tcp:ipv4addr:2233-:22 -cpu qemu64 debian.img

git tag v4.0.0 and master, commit a578cdfbdd8f9beff5ced52b7826ddb1669abbbf, for building qemu-system-x86_64 was used.

Node.js is compiled on the vm guest (v12.4.0 / master)

see also
https://github.com/nodejs/node/issues/19348#issuecomment-500465502

I need further assistance to track down the cause of the bug.

Kind regards
Manuel

description: updated
Revision history for this message
Peter Maydell (pmaydell) wrote :

This might be the same underlying problem as LP:1815423 which also mentions some issues with Javascript calculations involving arithmetic operations on a js "undefined" value. That bug has a C-only reproduce case so is probably a good place to start for anybody interesting in investigating and fixing it.

Revision history for this message
Peter Maydell (pmaydell) wrote :

https://<email address hidden>/ is a patch which I think probably fixes this bug -- could you test it? (I don't have an x86 vm with node.js in it to test with.)

Revision history for this message
manuel baesler (manuelbaesler) wrote :

Hi Peter,

I will try the tag and report back.

Revision history for this message
manuel baesler (manuelbaesler) wrote :

result:

node
Welcome to Node.js v12.4.0.
Type ".help" for more information.
> a = undefined
undefined
> a >>> 0
0
> let buffer
undefined
> buffer |= 0
0

Thanks for the patch :-)

Revision history for this message
Peter Maydell (pmaydell) wrote :

Thanks a lot for testing it!

Changed in qemu:
status: New → In Progress
Revision history for this message
Thomas Huth (th-huth) wrote :
Changed in qemu:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.