Sharp: invalid next size (fast) - ARMv7 - Raspbian GNU/Linux 9 (stretch)

Created on 28 Aug 2018  路  5Comments  路  Source: lovell/sharp

Hi,
I'm having an error with sharp on my raspberry pi, the same code works flawlessly with the same sharp version on my macbook. Here's the error:

*** Error in '/usr/local/bin/node': free(): invalid next size (fast): 0x71700dd8 ***

And heres the code:

//CREATE PLACEHOLDER IMAGE
sharp(fileUrl)
    .rotate()
    .resize(pDimension.width, pDimension.height)
    .jpeg({
        progressive: true,
        quality: 20,
        optimiseScans: true
    })
    .blur(2)
    .toFile(imageDirectory + "/" + imageName + "_p" + imageExt)
    .then(function () {
        finished();
    })
    .catch(err => console.log("Resize Err: "+err));

I have tried installing sharp without preinstalling libvips and then installing sharp with preinstall libvips and --sharpcxx11=1. Then i have tried to change _GLIBCXX_USE_CXX11_ABI=1 in binding.gyp with npm rebuild. Also i have tried node version 9, 10.0.0, 10.8.0 and 10.9.0.

gdp backtrace

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x76c51824 in __GI_abort () at abort.c:89
#2  0x76c8af78 in __libc_message (do_abort=do_abort@entry=2, fmt=<optimized out>) at ../sysdeps/posix/libc_fatal.c:175
#3  0x76c91ad4 in malloc_printerr (action=<optimized out>, str=0x76d43ffc "free(): invalid next size (fast)", ptr=<optimized out>, ar_ptr=<optimized out>) at malloc.c:5049
#4  0x76c92514 in _int_free (av=0x76d60794 <main_arena>, p=0x71600dd0, have_lock=<optimized out>) at malloc.c:3905
#5  0x7489337c in vips::VOption::~VOption() () from /var/www/ravenclaws/node_modules/sharp/build/Release/../../vendor/lib/libvips-cpp.so.42
#6  0x748933a0 in vips::VOption::~VOption() () from /var/www/ravenclaws/node_modules/sharp/build/Release/../../vendor/lib/libvips-cpp.so.42
#7  0x748939cc in vips::VImage::call_option_string(char const*, char const*, vips::VOption*) () from /var/www/ravenclaws/node_modules/sharp/build/Release/../../vendor/lib/libvips-cpp.so.42
#8  0x7489fc64 in vips::VImage::new_from_file(char const*, vips::VOption*) () from /var/www/ravenclaws/node_modules/sharp/build/Release/../../vendor/lib/libvips-cpp.so.42
#9  0x748c7f7c in sharp::OpenInput(sharp::InputDescriptor*, VipsAccess) () from /var/www/ravenclaws/node_modules/sharp/build/Release/sharp.node
#10 0x748df4e8 in PipelineWorker::Execute() () from /var/www/ravenclaws/node_modules/sharp/build/Release/sharp.node
#11 0x005ac86c in worker (arg=0x0) at ../deps/uv/src/threadpool.c:83
#12 0x76d69fc4 in start_thread (arg=0x72135450) at pthread_create.c:335
Backtrace stopped: Cannot access memory at address 0x2

General Information

CPU:
ARMv7 Processor rev 4 (v7l)

OS:
Linux version 4.14.50-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611))

node:
v10.9.0

npm:
6.2.0

sharp.versions:
{ cairo: '1.14.12', croco: '0.6.12', exif: '0.6.21', expat: '2.2.5', ffi: '3.2.1', fontconfig: '2.12.6', freetype: '2.9', gdkpixbuf: '2.36.11', gif: '5.1.4', glib: '2.55.1', gsf: '1.14.42', harfbuzz: '1.7.4', jpeg: '1.5.3', lcms: '2.9-', orc: '0.4.28', pango: '1.41.0', pixman: '0.34.0', png: '1.6.34', svg: '2.42.0', tiff: '4.0.9-cda4b06', vips: '8.6.1', webp: '0.6.1', xml: '2.9.7', zlib: '1.2.11' }

Any help would be greatly appreciated,

Cheers Max

PS(Edit): The code is running in a seperate thread
Edit2: npm rebuild not reinstall

question

All 5 comments

Hello, did you see #1336? This definitely looks like a mismatch in the value of _GLIBCXX_USE_CXX11_ABI between libvips and sharp.

Yes, i went trough the steps described in that issue, so i changed _GLIBCXX_USE_CXX11_ABI=0 to _GLIBCXX_USE_CXX11_ABI=1 in binding.gyp and than called npm rebuildbut the error still persisted. Was that correct, or what exactly do you mean by "mismatch".

Thank you for the help,
Cheers, Max

Edit: spelling

The pre-compiled libvips v8.6.1 for ARMv7 was erroneously compiled without setting _GLIBCXX_USE_CXX11_ABI and the compiler assigned an implicit value of 1 but sharp assumes these will be 0.

To work around this until sharp v0.21.0 is out, re-compiling sharp with an explicit 1 value should fix this (as it did with #1336). It sounds like you did the right thing so I'm a little surprised there's still a problem. Did you change line 120 (assuming sharp v0.20.7)? https://github.com/lovell/sharp/blob/v0.20.7/binding.gyp#L120

I think i found the problem, i changed the line above where it says:
'_GLIBCXX_USE_CXX11_ABI=<!(if readelf -Ws "$(PKG_CONFIG_PATH="<(pkg_config_path)" pkg-config --variable libdir vips-cpp)/libvips-cpp.so" | c++filt

To:
'_GLIBCXX_USE_CXX11_ABI=1#<!(if readelf -Ws "$(PKG_CONFIG_PATH="<(pkg_config_path)" pkg-config --variable libdir vips-cpp)/libvips-cpp.so" | c++filt

So it was (as usually) a human error. I can't test right now but i will report as soon as i get home.

I'm very thankful for your help and your amazing library.

Cheers, Max

Okay, it worked!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

iq-dot picture iq-dot  路  3Comments

zilions picture zilions  路  3Comments

henbenla picture henbenla  路  3Comments

natural-law picture natural-law  路  3Comments

vermin1337 picture vermin1337  路  3Comments