"[BUG] Segmentation fault" on import script.



Hi gang. Sorry I haven't been able to respond to my last post about
Stop Word dictionaries. Been all too busy, but the posted info was very
useful.

Anyways, I have a bit of a situation. I have a collection of files,
around 10,000, that I need to parse and then suck that data into a
database, along with their linked images. I've had a script that has
been working pretty much for over 99.5% of the articles. Both the
article data, and the images were getting imported fine.

The images also have to go through a few processing steps before being
put into the database. They are resized to meet a certain constraint,
of a new document format, and are also resized again a few more times
to create 2 sizes of Thumbnails. I've been using the RMagick library to
do the image resizing.

I then had to make a change, because I realized that I wasn't
accommodating Animated GIF's and the resulting images that were saved
only contained the first frame. So now I added just a routine around
the resizing to iterate through an ImageList and do all the resizing
for each frame.

Now with this change I get a "[BUG] Segmentation fault" error. I
thought maybe I was starving the memory resources and the GC couldn't
keep up. (I'm uncomfortably unfamiliar with how the Ruby GC works as
opposed to Java or .NET GC), so I explicitly call garbage_collect after
about 100 imports. Still get the same error.

This happens in both Ruby 1.8.2 and 1.8.4 on Mac OSX as well as Linux.
Also, if it possibly means anything, this script is run in a Rails
environment using the runner script. It will run successfully for about
4000 articles before it bombs out.

Here is an excerpt of the possibly offensive code:
# image_object is an ActiveRecord object created
# a little before this code.
# get the ImageList from the image file.
image_file_list = Magick::ImageList.new(@old_site_path + image_path)
# create ImageLists for the thumbnails copied from the original
ImageList
smaller_list = image_file_list.copy
smallest_list = image_file_list.copy
tiniest_list = image_file_list.copy

# loop thorugh the images in the list
for image_index in 0...image_file_list.length
image_file = image_file_list[image_index]
# resize the loaded image to the main constraints
image_file.change_geometry!('150x150') do |cols, rows, img|
img.resize!(cols, rows)
image_object.original_x = cols
image_object.original_y = rows
end

smaller_list[image_index] = image_file.change_geometry('110x110') do
|cols, rows, img|
image_object.thumb_x = cols
image_object.thumb_y = rows
img.resize(cols, rows)
end
smallest_list[image_index] = image_file.change_geometry('91x91') do
|cols, rows, img|
image_object.small_thumb_x = cols
image_object.small_thumb_y = rows
img.resize(cols, rows)
end
tiniest_list[image_index] = image_file.change_geometry('50x50') do
|cols, rows, img|
image_object.tiny_thumb_x = cols
image_object.tiny_thumb_y = rows
img.resize(cols, rows)
end
end

image_object.original_filename = File.basename(image_path)
image_object.title = "#{ review_data[:artist] }: #{ review_data[:title]
}"

image_object.image_data = image_file_list.to_blob
image_object.tiny_thumb = tiniest_list.to_blob # <-- segement fault
usually happens here.
image_object.big_thumb = smaller_list.to_blob
image_object.small_thumb = smallest_list.to_blob


Thanks in advance....

.



Relevant Pages

  • Re: "[BUG] Segmentation fault" on import script.
    ... and the images were getting imported fine. ... # create ImageLists for the thumbnails copied from the original ... image_object.original_x = cols ... Depending on the size of your images, 100 images could represent a very sizable chunk of memory. ...
    (comp.lang.ruby)
  • writing 3d rgb tiff files
    ... I'm having trouble writing multiple rgb tiff images to a single file. ... cols = 300; ... stacks = 10; ...
    (comp.soft-sys.matlab)
  • Re: table
    ... will hold a group of images. ... server number of images to be displayed will be passed from a PHP ... I would think the construction of the table would be done in PHP in this ... base on the result it will create x number of rows and cols. ...
    (comp.lang.javascript)
  • Re: Resizing & resaving graphics
    ... StretchBlt API does a really great job of resizing jpeg images, ...
    (comp.lang.basic.realbasic)
  • Re: Emailing A HUGE PPS
    ... batch resizing images in bmp, gif, and jpg picture formats. ... converting pictures from bitmap to JPEG or GIF, from JPEG to GIF or from ...
    (microsoft.public.powerpoint)