Skip to content

Node 24 crash when setting width/height on canvas: Check failed: static_cast<int64_t>(amount_before) >= -delta. #2514

Open
@Azlond

Description

@Azlond
import { createCanvas } from 'canvas';
import fs from 'node:fs';

const canvas = createCanvas(500, 500);
const context = canvas.getContext('2d');
canvas.width = 1000; // <------- crashes
context.fillStyle = 'green';
context.fillRect(10, 10, 150, 100);

const pngStream = canvas.createPNGStream();
const out = fs.createWriteStream('./output.png');
pngStream.pipe(out);

out.once('finish', () => {
  console.log('✓ saved as output.png');
});

When setting the width/height of the canvas-element (version 3.1.0) after creating it, node 24 crashes. When running the code above with node 23.11.0, everything works as expected. When using 24.0.1, it crashes with the following stack trace:

stack trace

#
# Fatal error in , line 0
# Check failed: static_cast<int64_t>(amount_before) >= -delta.
#
#
#
#FailureMessage Object: 0x7ffc059c7910
----- Native stack trace -----

 1: 0x111d431  [node]
 2: 0x2ccf773 V8_Fatal(char const*, ...) [node]
 3: 0x15cc9a5  [node]
 4: 0x1357ce3 v8::Isolate::AdjustAmountOfExternalAllocatedMemory(long) [node]
 5: 0x1015660 napi_adjust_external_memory [node]
 6: 0x7736d02594df non-virtual thunk to ImageBackend::destroySurface() [/home/user/canvas-test/node_modules/canvas/build/Release/canvas.node]
 7: 0x7736d024afca Backend::setWidth(int) [/home/user/canvas-test/node_modules/canvas/build/Release/canvas.node]
 8: 0x7736d027b7a8 Canvas::SetWidth(Napi::CallbackInfo const&, Napi::Value const&) [/home/user/canvas-test/node_modules/canvas/build/Release/canvas.node]
 9: 0x7736d02834bc napi_value__* Napi::InstanceWrap<Canvas>::WrappedMethod<&Canvas::SetWidth>(napi_env__*, napi_callback_info__*) [/home/user/canvas-test/node_modules/canvas/build/Release/canvas.node]
10: 0x1005e01  [node]
11: 0x1393362 v8::internal::Builtins::InvokeApiFunction(v8::internal::Isolate*, bool, v8::internal::DirectHandle<v8::internal::FunctionTemplateInfo>, v8::internal::DirectHandle<v8::internal::Object>, v8::base::Vector<v8::internal::DirectHandle<v8::internal::Object> const>, v8::internal::DirectHandle<v8::internal::HeapObject>) [node]
12: 0x18f0185 v8::internal::Object::SetPropertyWithAccessor(v8::internal::LookupIterator*, v8::internal::DirectHandle<v8::internal::Object>, v8::Maybe<v8::internal::ShouldThrow>) [node]
13: 0x1911ad4 v8::internal::Object::SetProperty(v8::internal::LookupIterator*, v8::internal::DirectHandle<v8::internal::Object>, v8::internal::StoreOrigin, v8::Maybe<v8::internal::ShouldThrow>) [node]
14: 0x16ce17b v8::internal::StoreIC::Store(v8::internal::Handle<v8::internal::Union<v8::internal::Smi, v8::internal::HeapNumber, v8::internal::BigInt, v8::internal::String, v8::internal::Symbol, v8::internal::Boolean, v8::internal::Null, v8::internal::Undefined, v8::internal::JSReceiver> >, v8::internal::Handle<v8::internal::Name>, v8::internal::DirectHandle<v8::internal::Object>, v8::internal::StoreOrigin) [node]
15: 0x16ceccd v8::internal::Runtime_StoreIC_Miss(int, unsigned long*, v8::internal::Isolate*) [node]
16: 0x7736b2636636 
Trace/breakpoint trap (core dumped)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions