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

Fast execution of baseContractMethod.staticCall and baseContractMethod.send seems to cause Node.js process to silently crash (with exit code 0). #4955

Open
tallero opened this issue Feb 28, 2025 · 0 comments
Assignees
Labels
investigate Under investigation and may be a bug. v6 Issues regarding v6

Comments

@tallero
Copy link

tallero commented Feb 28, 2025

Ethers Version

6.13.2

Search Terms

ive tried from google.

Describe the Problem

Hello,
in the code for the Ethereum Virtual Machine File System fast publishing routine I am using a synchronous for loop which generates in rapid successions instances of baseContract from which are then extracted two methods, one which performs static calls and another which sends transactions.

I'm sorry for the relatively large amount of logging and try/catching in the code but really I couldn't figure it was probably crashing because of ethers or node up until to now so I've added guards pretty much everywhere, gonna remove most of them in a couple hours.

When using indifferently one of the two, after around 100 fast calls or so on the Ethereum Holesky network (on Gnosis I haven't still encountered any issue every time I've downloaded that single 1500 chunks, 20MB file it has been published some months ago even when RPC shenanigans happen to throw exceptions), I do get the Node.js process to silently crash without returning any error code nor stack trace.

I'd like this issue I'm currently encountering may be actually caused by some typos or some quirkness I don't know about Javascript, but really error management has worked well up to now on Gnosis, so I guess it may not be an error handling issue.
Anyway, that could be an hint there may be an issue in the ethers RPC communication component (which I have no idea how is it called), I'm not sure.

Since I do not get any error code at all, I have tried running node using --trace.

The log is of course very heavy (over 180 MBs), so I am uploading only a reduced version containing its last 10.000 lines.

I still have to try reproducing this bug from pc.

In case it could be useful to know, I'm currently debugging this issue and (publishing most of my work) in an almost continuous daily video livestream which has been going on for the past 6 months or so I have no issues linking. I'd say I also struggle to derive a living from my work despite of its I'd say obvious and apparent usefulness, but I suppose this is not the place to share yet another rant about how our favourite crypto communities pretty much seem to pretend developers should extract value themselves from the networks, selling themselves to some random corporation or like getting a state job, but anyway.
You know, I am also DogeOS author among other things and apparently nobody seems to care there's like a bunch of millionaires or billionaires out there who I can't really say if they are trying to take over my work and they totally ignore me on purpose while I have poor people buying groceries for me, so you know, I'm kinda very frustrated.
I suppose I am relatively allowed to tell you these things, since my work heavily relies on the ethers software for now.

Since I'm actually tired to go after this bug though, I think I'm now simply gonna write the intermediate state on disk and simply restart the node process if it crashes because I can't lose further time on this if it's not dependent on an error on my side.

Code Snippet

The code is relatively long to paste in here.

In general to reproduce the issue you can try publishing some file running

evmfs \
  -v \
  -n \
    <your_preferred_network> \
  -m \
    "bulk" \
  publish \
    <some_file>

As I've said the issue is encountered when the amounts of rapidly processed 22KB string chunks is likely over 100 or so.

Contract ABI

Well, the base Ethereum Virtual Machine File System smart contract code is quite simple.

Also the call just basically loads a contract's string variable (a mapping) and write that same string.

The source code is here anyway and this is the executed function, but really it crashes already just when reading the mapping.

    /**
     * @dev Publish chunk.
     * @param _namespace Namespace for the file definition.
     * @param _hash Hash of the file the chunk belongs.
     * @param _index Which chunk are you setting.
     * @param _chunk In which post the chunk is contained.
     */
    function publishChunk(
      address _namespace,
      string memory _hash,
      uint256 _index,
      string memory _chunk) public {
      checkOwner(
        _namespace);
      checkUnlocked(
        _namespace,
        _hash,
        _index);
      chunks[_namespace][_hash][_index] = _chunk;
      if ( _index > length[msg.sender][_hash] ) {
        length[_namespace][_hash] = _index;
      }
    }

Errors

No error is returned at all, Node just crashes with exit code 0.

Environment

node.js (v12 or newer)

Environment (Other)

DogeOS Android base, still haven't tested on DogeOS GNU base.

@tallero tallero added investigate Under investigation and may be a bug. v6 Issues regarding v6 labels Feb 28, 2025
@tallero tallero changed the title fast execution of baseContractMethod.staticCall and baseContractMethod.send causes Node.js process to crash Fast execution of baseContractMethod.staticCall and baseContractMethod.send causes Node.js process to silently crash (with exit code 0). Feb 28, 2025
@tallero tallero changed the title Fast execution of baseContractMethod.staticCall and baseContractMethod.send causes Node.js process to silently crash (with exit code 0). Fast execution of baseContractMethod.staticCall and baseContractMethod.send seems to cause Node.js process to silently crash (with exit code 0). Feb 28, 2025
theamericanaccount pushed a commit to themartiancompany/evm-contracts-tools that referenced this issue Feb 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
investigate Under investigation and may be a bug. v6 Issues regarding v6
Projects
None yet
Development

No branches or pull requests

2 participants