ImageMagick错误:在Linux上的libc.so中“大小与prev_size损坏”

时间:2019-05-14 10:25:08

标签: imagemagick glibc libc

我正在使用imagemagick 7来读写一些TIFF文件。我有C++代码可以做到这一点,并且在Windows上可以正常工作。在Linux上编写TIFF文件时遇到了这个问题。我magemagick在创建ImageMagick Image并将Image写入文件时崩溃。

我已经收集了崩溃的痕迹,但似乎很难用痕迹进行分析。

我收到以下错误消息:

*** Error in `TestReadWriteImage': corrupted size vs. prev_size: 0x0000000001ef0430 ***
<br/>
======= Backtrace: ========= <br/>
/lib64/libc.so.6(+0x7f5d4)[0x7f81724b75d4]<br/>
/lib64/libc.so.6(+0x82de4)[0x7f81724bade4]<br/>
/lib64/libc.so.6(+0x8382c)[0x7f81724bb82c]<br/>
/lib64/libc.so.6(realloc+0x1d2)[0x7f81724bd832]<br/>
/lib64/libtiff.so.5(+0xd863)[0x7f816543e863]<br/>
/lib64/libtiff.so.5(TIFFSetField+0x94)[0x7f816543f124]<br/>
/home/data/linux_a64/code/bin/tiff.so(+0x7457)[0x7f81656ac457]<br/>
/home/data/linux_a64/code/bin/libMagickCore-7.Q8HDRI.so.0(WriteImage+0x260)[0x7f8168fc9490]<br/>
/home/data/linux_a64/code/bin/libMagick++-7.Q8HDRI.so.0(_ZN6Magick5Image5writeERKSs+0x43)[0x7f8168d1d853]<br/>


**Sample C++ Code:**<br/>
 *uchar* *pixels; // This variable contains some pixel data* <br/>
  *Magick::Image* *imImage = new Magick::Image(3, 3, "RGB",Magick::CharPixel, pixels);* <br/>
  *imImage->write("/home/tmp/Output.tiff");*

最后2条指令我崩溃了。

我不确定在哪里寻找问题。

崩溃后是ImageMagick,libc还是libtiff?

如果有人遇到同样的问题,请帮帮我。

1 个答案:

答案 0 :(得分:0)

  

我不确定在哪里寻找问题。

您有堆损坏(很可能是由于堆分配的缓冲区较早溢出造成的。)

用于发现此类问题的标准工具是Valgrind

  

我已经收集了崩溃的痕迹,但似乎很难用痕迹进行分析。

调试堆损坏(没有专用工具)的问题是问题出现的位置与问题实际发生的位置几乎没有关系。