MagickCoreGenesis(*argv, MagickFalse); hangs
Posted: 2015-12-09T22:56:38-07:00
Following the example in magick/im.core.demo.c and calling MagickCoreGenesis with the name of the program, the process never completes.
It appears to saturate 1 cpu/hthread, showing 12% cpu in task manager
Does the same thing with normal or back-slashes in the .exe name
does the same thing with MagicTrue | MagicFalse flag setting
shows 8,022k working set memory used in task manager, ~12% and very jagged cpu usage (not pegged at 100%)
no change in memory usage
file size of MagickCoreGenesis.hang.exe is 50054 Bytes
windows 7 /64 / pro, 32gb, sandy_bridge, quad core,
gcc (x86_64-posix-sjlj, built by strawberryperl.com project) 4.9.2
./configure run in cygwin 64 terminal,
The make check passed all 76 tests. The convert.exe that was built works fine, is much faster than the binary (~37::47 convert.exe time ratio for same file) and generates an HSL file from a 219 MB raw with the same MD5 signature.
Here is a full program which illustrates the problem:
This is the entire output:
I:\exp>c:/bin/MagickCoreGenesis.hang.exe i:/exp/raw/6s-2015.1031-254594.7360x4912.raw -d vhs
D1, *argv=c:/bin/MagickCoreGenesis.hang.exe << Terminate in task manager. Will not respond to ctrl-c
============================
=================================================
gcc verbose output:
It appears to saturate 1 cpu/hthread, showing 12% cpu in task manager
Does the same thing with normal or back-slashes in the .exe name
does the same thing with MagicTrue | MagicFalse flag setting
shows 8,022k working set memory used in task manager, ~12% and very jagged cpu usage (not pegged at 100%)
no change in memory usage
file size of MagickCoreGenesis.hang.exe is 50054 Bytes
windows 7 /64 / pro, 32gb, sandy_bridge, quad core,
gcc (x86_64-posix-sjlj, built by strawberryperl.com project) 4.9.2
./configure run in cygwin 64 terminal,
The make check passed all 76 tests. The convert.exe that was built works fine, is much faster than the binary (~37::47 convert.exe time ratio for same file) and generates an HSL file from a 219 MB raw with the same MD5 signature.
Here is a full program which illustrates the problem:
This is the entire output:
I:\exp>c:/bin/MagickCoreGenesis.hang.exe i:/exp/raw/6s-2015.1031-254594.7360x4912.raw -d vhs
D1, *argv=c:/bin/MagickCoreGenesis.hang.exe << Terminate in task manager. Will not respond to ctrl-c
============================
Code: Select all
//
// Test program to show MagickCoreGenesis hanging; using ~100% CPU on 1 of 4
// cores on windoz 7/64/pro/sp1
// gcc (x86_64-posix-sjlj, built by strawberryperl.com project) 4.9.2
//
// gcc -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -march=sandybridge -Id:/download/cygwin.64/download/usr/local/include/ImageMagick-6 -LD:/download/cygwin.64/download/usr/local/lib c:/bin/bak/MagickCoreGenesis.hang.c -lMagickCore-6.Q16HDRI -lm -o c:/bin/MagickCoreGenesis.hang.exe
void parse_argv(int argc, char *argv[]);
#include "magick/MagickCore.h"
void main(int argc, char *argv[]) {
ExceptionInfo *exception;
Image *image;
ImageInfo *image_info;
printf("D1, *argv=%s\n", *argv); fflush(stdout);
MagickCoreGenesis(*argv, MagickFalse);
//MagickCoreGenesis(*argv, MagickTrue); // HANGS
// NEVER GETS HERE!
printf("D2\n"); fflush(stdout);
exception=AcquireExceptionInfo();
printf("D3\n"); fflush(stdout);
image_info=CloneImageInfo((ImageInfo *) NULL);
printf("D4\n"); fflush(stdout);
parse_argv(argc, argv); // See what the user wants. Reads RAW file
DestroyImage(image);
image_info=DestroyImageInfo(image_info);
exception=DestroyExceptionInfo(exception);
MagickCoreTerminus();
exit(0); // No ERROR. Must have found target color!
} // End Main().
// =============================================================================
void parse_argv(int argc, char *argv[]) {
printf("PAV: %d args, [0]=%s\n", argc, argv[0]);
} // End Parse_Argv().
=================================================
gcc verbose output:
Code: Select all
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=e:/strawberry.perl/c/bin/../libexec/gcc/x86_64-w64-mingw32/4.9.2/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-4.9.2/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-gxx-include-dir=/mingw64/x86_64-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-sjlj-exceptions --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/opt/build/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/opt/build/prerequisites/x86_64-w64-mingw32-static --with-mpc=/opt/build/prerequisites/x86_64-w64-mingw32-static --with-isl=/opt/build/prerequisites/x86_64-w64-mingw32-static --with-cloog=/opt/build/prerequisites/x86_64-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='x86_64-posix-sjlj, built by strawberryperl.com project' CFLAGS='-O2 -pipe -I/opt/build/x86_64-492-posix-sjlj-rt_v402/mingw64/opt/include -I/opt/build/prerequisites/x86_64-zlib-static/include -I/opt/build/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/opt/build/x86_64-492-posix-sjlj-rt_v402/mingw64/opt/include -I/opt/build/prerequisites/x86_64-zlib-static/include -I/opt/build/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/opt/build/x86_64-492-posix-sjlj-rt_v402/mingw64/opt/lib -L/opt/build/prerequisites/x86_64-zlib-static/lib -L/opt/build/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: posix
gcc version 4.9.2 (x86_64-posix-sjlj, built by strawberryperl.com project)
COLLECT_GCC_OPTIONS='-v' '-D' 'MAGICKCORE_HDRI_ENABLE=1' '-D' 'MAGICKCORE_QUANTUM_DEPTH=16' '-march=sandybridge' '-I' 'd:/download/cygwin.64/download/usr/local/include/ImageMagick-6' '-LD:/download/cygwin.64/download/usr/local/lib' '-o' 'c:/bin/MagickCoreGenesis.hang.exe'
e:/strawberry.perl/c/bin/../libexec/gcc/x86_64-w64-mingw32/4.9.2/cc1.exe -quiet -v -I d:/download/cygwin.64/download/usr/local/include/ImageMagick-6 -iprefix e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/ -D_REENTRANT -D MAGICKCORE_HDRI_ENABLE=1 -D MAGICKCORE_QUANTUM_DEPTH=16 c:/bin/bak/MagickCoreGenesis.hang.c -quiet -dumpbase MagickCoreGenesis.hang.c -march=sandybridge -auxbase MagickCoreGenesis.hang -version -o P:\tmp\win_temp\ccpJUVZj.s
GNU C (x86_64-posix-sjlj, built by strawberryperl.com project) version 4.9.2 (x86_64-w64-mingw32)
compiled by GNU C version 4.8.4, GMP version 6.0.0, MPFR version 3.1.2-p9, MPC version 1.0.2
warning: MPFR header version 3.1.2-p9 differs from library version 3.1.2-p10.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "e:/strawberry.perl/c/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/include"
ignoring duplicate directory "e:/strawberry.perl/c/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../include"
ignoring nonexistent directory "/mingw64/include"
ignoring duplicate directory "e:/strawberry.perl/c/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/include-fixed"
ignoring duplicate directory "e:/strawberry.perl/c/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/include"
#include "..." search starts here:
#include <...> search starts here:
d:/download/cygwin.64/download/usr/local/include/ImageMagick-6
e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/include
e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../include
e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/include-fixed
e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/include
End of search list.
GNU C (x86_64-posix-sjlj, built by strawberryperl.com project) version 4.9.2 (x86_64-w64-mingw32)
compiled by GNU C version 4.8.4, GMP version 6.0.0, MPFR version 3.1.2-p9, MPC version 1.0.2
warning: MPFR header version 3.1.2-p9 differs from library version 3.1.2-p10.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 29d43b2ed4b5875a18aac5a2bbcc837d
COLLECT_GCC_OPTIONS='-v' '-D' 'MAGICKCORE_HDRI_ENABLE=1' '-D' 'MAGICKCORE_QUANTUM_DEPTH=16' '-march=sandybridge' '-I' 'd:/download/cygwin.64/download/usr/local/include/ImageMagick-6' '-LD:/download/cygwin.64/download/usr/local/lib' '-o' 'c:/bin/MagickCoreGenesis.hang.exe'
e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/as.exe -v -I d:/download/cygwin.64/download/usr/local/include/ImageMagick-6 -o P:\tmp\win_temp\cc5dEbxp.o P:\tmp\win_temp\ccpJUVZj.s
GNU assembler version 2.25 (x86_64-w64-mingw32) using BFD version (GNU Binutils) 2.25
COMPILER_PATH=e:/strawberry.perl/c/bin/../libexec/gcc/x86_64-w64-mingw32/4.9.2/;e:/strawberry.perl/c/bin/../libexec/gcc/;e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/
LIBRARY_PATH=e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/;e:/strawberry.perl/c/bin/../lib/gcc/;e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib/;e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../lib/;e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/;e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../
COLLECT_GCC_OPTIONS='-v' '-D' 'MAGICKCORE_HDRI_ENABLE=1' '-D' 'MAGICKCORE_QUANTUM_DEPTH=16' '-march=sandybridge' '-I' 'd:/download/cygwin.64/download/usr/local/include/ImageMagick-6' '-LD:/download/cygwin.64/download/usr/local/lib' '-o' 'c:/bin/MagickCoreGenesis.hang.exe'
e:/strawberry.perl/c/bin/../libexec/gcc/x86_64-w64-mingw32/4.9.2/collect2.exe -plugin e:/strawberry.perl/c/bin/../libexec/gcc/x86_64-w64-mingw32/4.9.2/liblto_plugin-0.dll -plugin-opt=e:/strawberry.perl/c/bin/../libexec/gcc/x86_64-w64-mingw32/4.9.2/lto-wrapper.exe -plugin-opt=-fresolution=P:\tmp\win_temp\cc56QYtC.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-liconv -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_eh -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -m i386pep -Bdynamic -o c:/bin/MagickCoreGenesis.hang.exe e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib/crtbegin.o -LD:/download/cygwin.64/download/usr/local/lib -Le:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2 -Le:/strawberry.perl/c/bin/../lib/gcc -Le:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib -Le:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../lib -Le:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib -Le:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../.. P:\tmp\win_temp\cc5dEbxp.o -lMagickCore-6.Q16HDRI -lm -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt e:/strawberry.perl/c/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/lib/../lib/crtend.o