[MacRuby-devel] PDFKit status?

Yasu Imao yimao.ml at gmail.com
Sun Dec 5 21:51:14 PST 2010


Hi Laurent and Matt,

I tried the script with GC_DISABLE=1 (I'm not sure if this is how it should be, though), and with GC_DISABLE set to 1, the script run without any problem.  As with my first post, 'sample.pdf' is a 12000 word academic journal article PDF in English.

I also tried .map{|x| x.string} as well as .each{} and got the same results (error).  I got error something like 9 out of 10 times.  When I didn't use block, the script run without any error (even without GC disabling)

Should I go ahead and file a ticket?


$ GC_DISABLE=1 macruby sample.rb


sample.rb

#!/usr/local/bin/macruby
framework 'cocoa';framework 'Quartz'
PDFDocument.alloc.initWithURL(NSURL.fileURLWithPath("sample.pdf")).findString("the",withOptions:NSCaseInsensitiveSearch).each{|x| p x.string}


The error messages I got are (multiple, all while processing the block):

=> NSInvalidArgumentException: -[CPCharacterIndex count]: unrecognized selector sent to instance (RuntimeError Error)

=> NSRangeException: *** -[NSCFArray objectAtIndex:]: index (220) beyond bounds (2) (RuntimeError)

=> [CPZoneBorderIntersection count]: unrecognized selector sent to instance

=> Segmentation fault



Best,
Yasu

On 2010/12/06, at 11:50, Laurent Sansonetti wrote:

> Hi Yasu,
> 
> I tried your sample with a large pdf in my environment a few times and it never crashed. But I suspect the exception you're getting is due to a memory problem, maybe related to the GC.
> 
> Can you try setting the GC_DISABLE environment variable to 1 when running the script?
> 
> If it doesn't crash anymore it's probably not a bug in MacRuby then. I would try to rewrite the sample in pure Objective-C and see if the crash persists.
> 
> Laurent
> 
> On Dec 5, 2010, at 4:27 PM, Yasu Imao wrote:
> 
>> Hi,
>> 
>> I'm wondering what the status of using PDFKit in MacRuby.  Should it be fully usable now?  I encountered a possible bug.  
>> 
>> 
>> framework 'cocoa'
>> framework 'Quartz'
>> 
>> path = <whatever the path to a pdf file>
>> 
>> pdfDoc = PDFDocument.alloc.initWithURL(NSURL.fileURLWithPath(path))
>> selections = pdfDoc.findString("the",withOptions:NSCaseInsensitiveSearch)
>> selections.each do |selection|
>>  p selection.string
>> end
>> 
>> => NSInvalidArgumentException: -[CPCharacterIndex count]: unrecognized selector sent to instance 0x200915a80 (RuntimeError Error)
>> 
>> 
>> The PDF I used is an academic journal article PDF with about 12000 words.  This occurred at different positions in the PDF file every time.  Sometimes this happens earlier in the loop and sometimes later.  This did run a few times without error (rarely, though).  Whether or not to add .string didn't matter.  The same process works without any problem with RubyCocoa.
>> 
>> 
>> Best,
>> Yasu
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
> 
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel



More information about the MacRuby-devel mailing list