You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Mark Stosberg <ma...@summersault.com> on 2005/05/19 00:09:07 UTC

[mp1] sbrk() out of memory error (help needed with C library path issue)

Hello,

I'm trying to get Graphics::Magick to work with mod_perl on FreeBSD
4.10.

On our FreeBSD 5.1 development server, everything works fine. 

It appears that as soon as the module is attempted to be used,
an infinite loop is entered resulting an out of memory error. 
I used 'truss' to see what was happen at that point, and I found
that 'break()' was being called repeatedly:

 fcntl(0x8,0x3,0x0)                               = 16386 (0x4002)
 fstat(8,0x28208220)                              = 0 (0x0)
 fcntl(0x8,0x2,0x1)                               = 0 (0x0)
 umask(0x12)                                      = 54 (0x36)
 stat("/tmp/CGIuploaderfgiE9",0x80ef388)          = 0 (0x0)
 break(0x8be6000)                                 = 0 (0x0)
 break(0x8be6800)                                 = 0 (0x0)
 break(0x8be7000)                                 = 0 (0x0)
 break(0x8be7800)                                 = 0 (0x0)
 break(0x8be8000)                                 = 0 (0x0)
 break(0x8be8800)                                 = 0 (0x0)
 break(0x8be9000)                                 = 0 (0x0)
 break(0x8be9800)                                 = 0 (0x0)
 break(0x8bea000)                                 = 0 (0x0)
 break(0x8bea800)                                 = 0 (0x0)

I don't actually suspect my issue is mod-perl specific, but I'm not sure
where else to ask for help, either. 

What's unique about this Graphics::Magick module is that is uses some XS
C code, and I have installed into a custom location rather than the
system path. My best guess is something about my installation into
custom pass has caused a condition that triggers this error.

Just for comparison, I also tried to install and use Image::Magick the
same way and got the the result. I know that both of these modules can
work with mod_perl. 

I'm compiling like this:

./configure \
  LDFLAGS='-R /home/sap/betasite/lib:/home/sap/production/lib' \
  --prefix=/home/sap/betasite/graphics_magick --without-x \
  --with-magick-plus-plus=no --enable-shared --disable-static \
  --with-jpeg=yes --with-png=yes --enable-symbol-prefix

I checked that the libraries to the resulting binary look reasonable:

$ ldd /usr/home/sap/betasite/lib/libMagick.so
/usr/home/sap/betasite/lib/libMagick.so:
        libjbig.so.1 => /usr/local/lib/libjbig.so.1 (0x2837e000)
        libtiff.so.4 => /usr/local/lib/libtiff.so.4 (0x2838b000)
        libfreetype.so.9 => /usr/local/lib/libfreetype.so.9 (0x283d4000)
        libbz2.so.1 => /usr/lib/libbz2.so.1 (0x2843b000)
        libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x2844b000)
        libz.so.2 => /usr/lib/libz.so.2 (0x28536000)
        libm.so.2 => /usr/lib/libm.so.2 (0x28543000)
        libltdl.so.4 => /home/sap/betasite/lib/libltdl.so.4 (0x2855e000)
        libjpeg.so.9 => /usr/local/lib/libjpeg.so.9 (0x28565000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28583000)

$ ldd auto/Image/Magick/Magick.so
auto/Image/Magick/Magick.so:
        libMagick.so.8 => not found (0x0)
        libfreetype.so.9 => /usr/local/lib/libfreetype.so.9 (0x28130000)
        libz.so.2 => /usr/lib/libz.so.2 (0x28197000)
        libjbig.so.1 => /usr/local/lib/libjbig.so.1 (0x281a4000)
        libtiff.so.4 => /usr/local/lib/libtiff.so.4 (0x281b1000)
        libbz2.so.1 => /usr/lib/libbz2.so.1 (0x281fa000)
        libxml2.so.5 => /usr/local/lib/libxml2.so.5 (0x2820a000)
        libc_r.so.4 => /usr/lib/libc_r.so.4 (0x282f5000)
        libm.so.2 => /usr/lib/libm.so.2 (0x283ab000)
        libjpeg.so.9 => /usr/local/lib/libjpeg.so.9 (0x283c6000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x283e4000)

####

Hey, did I just find the problem? I looks like Magick.so is not finding
libMagick.so.8.

How do I make that connection? 

I realize is probably more of a C programming question. I appreciate your help!

    Mark