Truffle compilation error: "RuntimeError: memory access out of bounds" during OpenZeppelin contracts compilation

30 views Asked by At

Description: I'm working on a smart contract for asset tokenization, and I'm utilizing OpenZeppelin contracts for various functionalities. However, when I compile the code, I encounter a runtime error: "RuntimeError: memory access out of bounds." I'm seeking assistance in resolving this issue.

code

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract AssetToken is ERC20, Ownable {
    // Address of the owner who has the right to mint tokens
    address private _owner;

    // Constructor to set the token details
    constructor(string memory name, string memory symbol) ERC20(name, symbol) {
        _owner = msg.sender;
    }

    // Modifier to restrict minting to the owner only
    modifier onlyOwner() {
        require(msg.sender == _owner, "Not the owner");
        _;
    }

    // Function to mint new tokens
    function mint(address account, uint256 amount) external onlyOwner {
        _mint(account, amount);
    }
}

I'm encountering an issue during the compilation of OpenZeppelin contracts using Truffle. The error message is as follows:

> Compiling .\contracts\openzeppelin-contracts-master\contracts\interfaces\IERC5313.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\interfaces\IERC5805.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\governance\GovernorTimelockCompoundMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\governance\GovernorTimelockControlMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\governance\GovernorVoteMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\governance\GovernorWithParamsMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\proxy\BadBeacon.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\proxy\ClashingImplementation.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\proxy\UUPSUpgradeableMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC1155ReceiverMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC1363ForceApproveMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC1363NoReturnMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC1363ReceiverMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC1363ReturnFalseMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC1363SpenderMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20ApprovalMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20DecimalsMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20ExcessDecimalsMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20FlashMintMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20ForceApproveMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20Mock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20MulticallMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20NoReturnMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20Reentrant.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20ReturnFalseMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20VotesLegacyMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC20VotesTimestampMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC4626LimitsMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC4626Mock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC4626OffsetMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC4646FeesMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC721ConsecutiveEnumerableMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC721ConsecutiveMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC721ReceiverMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\mocks\token\ERC721URIStorageMock.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\Clones.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\ERC1967\ERC1967Proxy.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\ERC1967\ERC1967Utils.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\Proxy.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\beacon\BeaconProxy.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\beacon\IBeacon.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\beacon\UpgradeableBeacon.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\transparent\ProxyAdmin.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\transparent\TransparentUpgradeableProxy.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\utils\Initializable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\proxy\utils\UUPSUpgradeable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\ERC1155.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\IERC1155.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\IERC1155Receiver.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\extensions\ERC1155Burnable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\extensions\ERC1155Pausable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\extensions\ERC1155Supply.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\extensions\ERC1155URIStorage.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\extensions\IERC1155MetadataURI.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\utils\ERC1155Holder.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC1155\utils\ERC1155Utils.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\ERC20.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\IERC20.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC1363.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC20Burnable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC20Capped.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC20FlashMint.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC20Pausable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC20Permit.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC20Votes.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC20Wrapper.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\ERC4626.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\IERC20Metadata.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\extensions\IERC20Permit.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC20\utils\SafeERC20.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\ERC721.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\IERC721.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\IERC721Receiver.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721Burnable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721Consecutive.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721Enumerable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721Pausable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721Royalty.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721URIStorage.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721Votes.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\ERC721Wrapper.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\IERC721Enumerable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\extensions\IERC721Metadata.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\utils\ERC721Holder.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\ERC721\utils\ERC721Utils.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\token\common\ERC2981.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Address.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Arrays.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Base64.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Context.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Create2.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Multicall.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Nonces.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Panic.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Pausable.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\ReentrancyGuard.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\ShortStrings.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\StorageSlot.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\Strings.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\cryptography\ECDSA.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\cryptography\EIP712.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\cryptography\MerkleProof.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\cryptography\MessageHashUtils.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\cryptography\SignatureChecker.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\introspection\ERC165.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\introspection\ERC165Checker.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\introspection\IERC165.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\math\Math.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\math\SafeCast.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\math\SignedMath.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\structs\BitMaps.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\structs\Checkpoints.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\structs\DoubleEndedQueue.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\structs\EnumerableMap.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\structs\EnumerableSet.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\utils\types\Time.sol
> Compiling .\contracts\openzeppelin-contracts-master\contracts\vendor\compound\ICompoundTimelock.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\governance\Governor.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\metatx\ERC2771Forwarder.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\token\ERC20\extensions\ERC4626.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\token\ERC721\extensions\ERC721Consecutive.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\utils\Arrays.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\utils\Base64.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\utils\ShortStrings.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\utils\math\Math.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\utils\math\SignedMath.t.sol
> Compiling .\contracts\openzeppelin-contracts-master\test\utils\structs\Checkpoints.t.sol
RuntimeError: memory access out of bounds
    at null.<anonymous> (wasm://wasm/053b6712:1:235185)
    at null.<anonymous> (wasm://wasm/053b6712:1:161276)
    at invoke_ii (<anonymous>:110:37959)
    at null.<anonymous> (wasm://wasm/053b6712:1:20309314)
    at ccall (<anonymous>:110:28936)
    at <anonymous>:110:29327
    at runWithCallbacks (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\solc\bindings\compile.js:169:1)      
    at Object.boundFunctionStandard [as compileStandard] (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\solc\bindings\compile.js:83:1)
    at compileStandardWrapper (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\node_modules\solc\wrapper.js:66:1)
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:225:1
    at Generator.next (<anonymous>)
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:31:1
    at new Promise (<anonymous>)
    at exports.modules.71193.__awaiter (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:27:1)
    at invokeCompiler (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:212:1)        
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:72:47
    at Generator.next (<anonymous>)
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:31:1
    at new Promise (<anonymous>)
    at exports.modules.71193.__awaiter (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:27:1)
    at run (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\run.js:50:1)
    at Object.<anonymous> (C:\Users\Admin\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\compile-solidity\dist\index.js:204:1)  
Truffle v5.11.5 (core: 5.11.5)
Node v20.10.0

I'm seeking assistance in resolving this issue. Any guidance or suggestions on how to fix this "memory access out of bounds" error would be greatly appreciated. Thank you!

I'm working on a smart contract for asset tokenization and using OpenZeppelin contracts for various functionalities. The error seems to be related to the Solidity compiler, and I've tried several steps to resolve it:

Checked Solidity version compatibility. Updated Truffle to the latest version. Ensured a stable Node.js version (using Node v20.10.0). Verified compatibility between OpenZeppelin contracts and Solidity version. Deleted the build directory and recompiled. Despite these efforts, the issue persists. I'm seeking assistance in resolving this "memory access out of bounds" error. If anyone has faced a similar problem or has suggestions on how to troubleshoot this, your guidance would be greatly appreciated.

0

There are 0 answers