[MacRuby-devel] Malloc and EXC_BAD_ACCESS error for this loop

F. Timur Senguen ftsenguen at gmail.com
Fri Nov 16 10:36:38 PST 2012


Hi everyone,

I am trying to write a simple batch Excel extractor:
I have an array of file names that I created a .each loop for. In the loop
(under Exception handling) I open that file, add the name of the file to
another spreadsheet (which I created earlier), then move on to the next
file.

This works great for the first 3 files, but after that I get malloc errors
and eventually the app crashes with an EXC_BAD_ACCESS error in the Garbage
Collection Work Queue.

Code:

require 'rubygems'
require 'write_xlsx'
require 'roo'


class SimpleExcelExtractor
    attr_accessor :input_path, :output_path, :input_button, :output_button
    attr_accessor :quit_button, :go_button, :sheet_text, :column_text,
:row_text


GUI Stuff
...
...
...
    def run_func(input, filelist, sheet, column, row, output)

        row = col = 0
        wb = WriteXLSX.new(output)
        worksheet = wb.add_worksheet
        p filelist

        filelist.each do |f|

            begin
                input_file = Excelx.new(input + "/" + f)
                p "Opened file: " + f
                worksheet.write(row, col, f)
                p "Wrote it up"
                row += 1
                p "Went ahead"
                input_file

            rescue Exception => e
                p e
            end
        end

        p "Saving now"
        wb.write
        p "Saved"

    end

    def quit_func(sender)
    end
end

Debug output:

*["test 2.xlsx", "test.xlsx", "test2 2.xlsx", "test2.xlsx", "test3 2.xlsx",
"test3.xlsx", "test4 2.xlsx", "test4.xlsx"]*

*"Opened file: test 2.xlsx"*

*"Wrote it up"*

*"Went ahead"*

*"Opened file: test.xlsx"*

*"Wrote it up"*

*"Went ahead"*

*"Opened file: test2 2.xlsx"*

*"Wrote it up"*

*"Went ahead"*

*"Opened file: test2.xlsx"*

*SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on
collectable block with 0x401234b20 with refcount 0 (ignored)*

*"Wrote it up"*

*"Went ahead"*

*SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on
collectable block with 0x4016622e0 with refcount 0 (ignored)*

*SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on
collectable block with 0x40127b640 with refcount 0 (ignored)*

*SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on
collectable block with 0x40138b7a0 with refcount 0 (ignored)*

*SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on
collectable block with 0x40154cd40 with refcount 0 (ignored)*

*SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on
collectable block with 0x40136d4c0 with refcount 0 (ignored)*

*SimpleExcelExtractor(57679,0x1082f6000) malloc: *** free() called on
collectable block with 0x4016d2620 with refcount 0 (ignored)*

*(lldb) *

Then in the Debug window it has the following in the Garbage Collector Work
Queue:

#include <xml_node_set.h>

#include <libxml/xpathInternals.h>


static ID decorate ;


static int dealloc_namespace(xmlNsPtr ns)

{

  if (ns->href)                                          <----Thread 12:
EXC_BAD_ACCESS (code=1, address = 0x22)

    xmlFree((xmlChar *)ns->href);

  if (ns->prefix)

    xmlFree((xmlChar *)ns->prefix);

  xmlFree(ns);

  return ST_CONTINUE;

}


-- 
F. Timur Senguen, Ph.D.
VP of Testing and Science
Reviewed.com - A division of USAToday
411A Highland Ave
Somerville, MA 02155
USA
reviewed.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20121116/0ec64b39/attachment.html>


More information about the MacRuby-devel mailing list