我正在使用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?
如果有人遇到同样的问题,请帮帮我。
答案 0 :(得分:0)
我不确定在哪里寻找问题。
您有堆损坏(很可能是由于堆分配的缓冲区较早溢出造成的。)
用于发现此类问题的标准工具是Valgrind。
我已经收集了崩溃的痕迹,但似乎很难用痕迹进行分析。
调试堆损坏(没有专用工具)的问题是问题出现的位置与问题实际发生的位置几乎没有关系。