[Magick-bugs] Gif processor crashes

Bokor Márton marton.bokor at gfthu.com
Mon Jun 9 00:43:17 PDT 2008


I was getting access violations (in gif related dll) while batch converting and saving emf to gif on Windows XP. It happened quite frequently after about 100th saving. The only reason I believe it is a bug is that it does not happen with jpg. In my testcase I was very  low on physical memory, practically the full conversion went in virtual memory. Average size of emf is 100KB. Here is the crashing code in JMagick:

for (int i = 0; i < files.length; i++) { 

                                                               File srcFile = new File(gifFolder + "/" + files[i]); //about 20 100KB files here

                                                               

                                                               if (srcFile.exists()) {        

                                                                              System.out.println("ImageMagick: processing " + srcFile.getAbsolutePath());

                                                                              ImageInfo info = new ImageInfo( srcFile.getAbsolutePath() );

                                                                              info.setDensity("300");                                                                                                                                             

                                                               MagickImage image = new MagickImage( info );                                                                                            

                                                                                                                              

                                                               String gifFile = gifFolder + "/big_" + files[i].replaceAll("\\.EMF", ".gif"); //wonr crash with .jpg

                                                               System.out.println("ImageMagick: processing " + gifFile);

                                                               image = image.scaleImage(960, 720);

                                                               image.setFileName(gifFile);                                                                     

                                                                              image.writeImage(new ImageInfo(gifFile));

                                                                              

                                                                              gifFile = gifFolder + "/" + files[i].replaceAll("\\.EMF", ".gif");

                                                                              System.out.println("ImageMagick: processing " + gifFile);

                                                                              image = image.scaleImage(640, 480);

                                                                              image.setFileName(gifFile);       

                                                                              image.writeImage(new ImageInfo(gifFile));

 

                                                                              gifFile = gifFolder + "/small_" + files[i].replaceAll("\\.EMF", ".gif");

                                                                              System.out.println("ImageMagick: processing " + gifFile);

                                                                              image = image.scaleImage(90, 65);

                                                                              image.setFileName(gifFile);       

                                                                              image.writeImage(new ImageInfo(gifFile));

                                                                              image.destroyImages();

                                                               }

                                               }

I have already rewrote my code to jpg because of this, but I hope someone can reproduce it and fix it. In my oppinion there is a minor memory leak in the gif related codes.

Marton Bokor



More information about the Magick-bugs mailing list