Skip to content

JS tracer fails on too large stacks in returnvalue #23669

@holiman

Description

@holiman

There appears to be a regression, which concerns alpine builds, which causes crashes like #23660 .
This seems to happen only when runing via docker, and it can be reproed like as shown below. This was once fixed by #22857, no idea why we're seeing it now.

Run it

docker run ethereum/client-go --nodiscover --maxpeers 0 --dev 

Also


docker exec -it beautiful_banach  /bin/sh

/ # geth attach /tmp/geth.ipc 
Welcome to the Geth JavaScript console!

instance: Geth/v1.10.10-unstable-f2491c5e/linux-amd64/go1.17.1
coinbase: 0xb2337989567fba76b5e50d8244c29aa38f33b2e3
at block: 0 (Thu Jan 01 1970 00:00:00 GMT+0000 (UTC))
 datadir: 
 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

To exit, press ctrl-d or type exit
> eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[0], value:1 })
"0x1f1f731660e34a9e71bc8d2fe809334529ea8f6ce997d7fcdd34180c669d5c4f"

> tracer = "{step: function() {}, fault: function() {}, result: function() { var o={}; var x=o; for (var i=0; i<1000; i++){o.foo={}; o=o.foo; } return x; }}"
"{step: function() {}, fault: function() {}, result: function() { var o={}; var x=o; for (var i=0; i<1000; i++){o.foo={}; o=o.foo; } return x; }}"
> debug.traceTransaction("0x1f1f731660e34a9e71bc8d2fe809334529ea8f6ce997d7fcdd34180c669d5c4f", {"tracer": tracer})
Error: EOF
	at web3.js:6357:37(47)
	at web3.js:5091:62(37)
	at <eval>:1:23(7)

^ process killed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions