Project

General

Profile

Bug #26

[DOC] Typo in enumerator.c (Enumerator.new)

Added by ameuret (Arnaud MEURET) over 9 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
[ruby-core:17061]

Description

=begin
The doc for Enumerable::Enumerator.new(obj, method = :each, *args) states:

Use of this method is not discouraged.

It should probably be:

Use of this method is discouraged.

line 240 in rev #16614
=end

Associated revisions

Revision 8483
Added by ser (Sean Russell) over 12 years ago

Merged in development from the main REXML repository.

  • Fixed bug #34, typo in xpath_parser.
  • Previous fix, (include? -> includes?) was incorrect.
  • Added another test for encoding
  • Started AnyName support in RelaxNG
  • Added Element#Attributes#to_a, so that it does something intelligent. This was needed by XPath, for '@*'
  • Fixed XPath so that @* works.
  • Added xmlgrep to the bin/ directory. A little tool allowing you to grep for XPaths in an XML document.
  • Fixed a CDATA pretty-printing bug. (#39)
  • Fixed a buffering bug in Source.rb that affected the SAX parser This bug was related to how REXML determines the encoding of a file, and evinced itself by hanging on input when using the SAX parser.
  • The unit test for the previous patch. Forgot to commit it.
  • Minor pretty printing fix.
  • Applied Curt Sampson's optimization improvements
  • Issue #9; 3.1.3: The SAX parser was not denormalizing entity references in incoming text. All declared internal entities, as well as numeric entities, should now be denormalized. There was a related bug in that the SAX parser was actually double-encoding entities; this is also fixed.
  • bin/* programs should now be executable. Setting bin apps to executable
  • Issue 14; 3.1.3: DTD events are now all being passed by StreamParser Some of the DTD events were not being passed through by the stream parser.
  • #26: Element#add_element(nil) now raises an error Changed XPath searches so that if a non-Hash is passed, an error is raised Fixed a spurrious undefined method error in encoding. #29: XPath ordering bug fixed by Mark Williams. Incidentally, Mark supplied a superlative bug report, including a full unit test. Then he went ahead and fixed the bug. It doesn't get any better than this, folks.
  • Fixed a broken link. Thanks to Dick Davies for pointing it out. Added functions courtesy of Michael Neumann mneumann@xxxx.de. Example code to follow.
  • Added Michael's sample code. Merged the changes in from branches/xpath_V
  • Fixed preceding:: and following:: axis Fixed the ordering bug that Martin Fowler reported.
  • Uncommented some code commented for testing Applied Nobu's changes to the Encoding infrastructure, which should fix potential threading issues.
  • Added more tests, and the missing syncenumerator class. Fixed the inheritance bug in the pull parser that James Britt found. Indentation changes, and changed some exceptions to runtime exceptions.
  • Changes by Matz, mostly of indent -> indent_level, to avoid function/variable naming conflicts
  • Tabs -> spaces (whitespace)

Note the addition of syncenumerator.rb. This is a stopgap, until I can work on
the class enough to get it accepted as a replacement for the SyncEnumerator
that comes with the Generator class. My version is orders of magnitude faster
than the Generator SyncEnumerator, but is currently missing a couple of
features of the original. Eventually, I expect this class to migrate to
another part of the source tree.

Revision 8483
Added by ser (Sean Russell) over 12 years ago

Merged in development from the main REXML repository.

  • Fixed bug #34, typo in xpath_parser.
  • Previous fix, (include? -> includes?) was incorrect.
  • Added another test for encoding
  • Started AnyName support in RelaxNG
  • Added Element#Attributes#to_a, so that it does something intelligent. This was needed by XPath, for '@*'
  • Fixed XPath so that @* works.
  • Added xmlgrep to the bin/ directory. A little tool allowing you to grep for XPaths in an XML document.
  • Fixed a CDATA pretty-printing bug. (#39)
  • Fixed a buffering bug in Source.rb that affected the SAX parser This bug was related to how REXML determines the encoding of a file, and evinced itself by hanging on input when using the SAX parser.
  • The unit test for the previous patch. Forgot to commit it.
  • Minor pretty printing fix.
  • Applied Curt Sampson's optimization improvements
  • Issue #9; 3.1.3: The SAX parser was not denormalizing entity references in incoming text. All declared internal entities, as well as numeric entities, should now be denormalized. There was a related bug in that the SAX parser was actually double-encoding entities; this is also fixed.
  • bin/* programs should now be executable. Setting bin apps to executable
  • Issue 14; 3.1.3: DTD events are now all being passed by StreamParser Some of the DTD events were not being passed through by the stream parser.
  • #26: Element#add_element(nil) now raises an error Changed XPath searches so that if a non-Hash is passed, an error is raised Fixed a spurrious undefined method error in encoding. #29: XPath ordering bug fixed by Mark Williams. Incidentally, Mark supplied a superlative bug report, including a full unit test. Then he went ahead and fixed the bug. It doesn't get any better than this, folks.
  • Fixed a broken link. Thanks to Dick Davies for pointing it out. Added functions courtesy of Michael Neumann mneumann@xxxx.de. Example code to follow.
  • Added Michael's sample code. Merged the changes in from branches/xpath_V
  • Fixed preceding:: and following:: axis Fixed the ordering bug that Martin Fowler reported.
  • Uncommented some code commented for testing Applied Nobu's changes to the Encoding infrastructure, which should fix potential threading issues.
  • Added more tests, and the missing syncenumerator class. Fixed the inheritance bug in the pull parser that James Britt found. Indentation changes, and changed some exceptions to runtime exceptions.
  • Changes by Matz, mostly of indent -> indent_level, to avoid function/variable naming conflicts
  • Tabs -> spaces (whitespace)

Note the addition of syncenumerator.rb. This is a stopgap, until I can work on
the class enough to get it accepted as a replacement for the SyncEnumerator
that comes with the Generator class. My version is orders of magnitude faster
than the Generator SyncEnumerator, but is currently missing a couple of
features of the original. Eventually, I expect this class to migrate to
another part of the source tree.

Revision 8483
Added by ser (Sean Russell) over 12 years ago

Merged in development from the main REXML repository.

  • Fixed bug #34, typo in xpath_parser.
  • Previous fix, (include? -> includes?) was incorrect.
  • Added another test for encoding
  • Started AnyName support in RelaxNG
  • Added Element#Attributes#to_a, so that it does something intelligent. This was needed by XPath, for '@*'
  • Fixed XPath so that @* works.
  • Added xmlgrep to the bin/ directory. A little tool allowing you to grep for XPaths in an XML document.
  • Fixed a CDATA pretty-printing bug. (#39)
  • Fixed a buffering bug in Source.rb that affected the SAX parser This bug was related to how REXML determines the encoding of a file, and evinced itself by hanging on input when using the SAX parser.
  • The unit test for the previous patch. Forgot to commit it.
  • Minor pretty printing fix.
  • Applied Curt Sampson's optimization improvements
  • Issue #9; 3.1.3: The SAX parser was not denormalizing entity references in incoming text. All declared internal entities, as well as numeric entities, should now be denormalized. There was a related bug in that the SAX parser was actually double-encoding entities; this is also fixed.
  • bin/* programs should now be executable. Setting bin apps to executable
  • Issue 14; 3.1.3: DTD events are now all being passed by StreamParser Some of the DTD events were not being passed through by the stream parser.
  • #26: Element#add_element(nil) now raises an error Changed XPath searches so that if a non-Hash is passed, an error is raised Fixed a spurrious undefined method error in encoding. #29: XPath ordering bug fixed by Mark Williams. Incidentally, Mark supplied a superlative bug report, including a full unit test. Then he went ahead and fixed the bug. It doesn't get any better than this, folks.
  • Fixed a broken link. Thanks to Dick Davies for pointing it out. Added functions courtesy of Michael Neumann mneumann@xxxx.de. Example code to follow.
  • Added Michael's sample code. Merged the changes in from branches/xpath_V
  • Fixed preceding:: and following:: axis Fixed the ordering bug that Martin Fowler reported.
  • Uncommented some code commented for testing Applied Nobu's changes to the Encoding infrastructure, which should fix potential threading issues.
  • Added more tests, and the missing syncenumerator class. Fixed the inheritance bug in the pull parser that James Britt found. Indentation changes, and changed some exceptions to runtime exceptions.
  • Changes by Matz, mostly of indent -> indent_level, to avoid function/variable naming conflicts
  • Tabs -> spaces (whitespace)

Note the addition of syncenumerator.rb. This is a stopgap, until I can work on
the class enough to get it accepted as a replacement for the SyncEnumerator
that comes with the Generator class. My version is orders of magnitude faster
than the Generator SyncEnumerator, but is currently missing a couple of
features of the original. Eventually, I expect this class to migrate to
another part of the source tree.

Revision 8483
Added by ser (Sean Russell) over 12 years ago

Merged in development from the main REXML repository.

  • Fixed bug #34, typo in xpath_parser.
  • Previous fix, (include? -> includes?) was incorrect.
  • Added another test for encoding
  • Started AnyName support in RelaxNG
  • Added Element#Attributes#to_a, so that it does something intelligent. This was needed by XPath, for '@*'
  • Fixed XPath so that @* works.
  • Added xmlgrep to the bin/ directory. A little tool allowing you to grep for XPaths in an XML document.
  • Fixed a CDATA pretty-printing bug. (#39)
  • Fixed a buffering bug in Source.rb that affected the SAX parser This bug was related to how REXML determines the encoding of a file, and evinced itself by hanging on input when using the SAX parser.
  • The unit test for the previous patch. Forgot to commit it.
  • Minor pretty printing fix.
  • Applied Curt Sampson's optimization improvements
  • Issue #9; 3.1.3: The SAX parser was not denormalizing entity references in incoming text. All declared internal entities, as well as numeric entities, should now be denormalized. There was a related bug in that the SAX parser was actually double-encoding entities; this is also fixed.
  • bin/* programs should now be executable. Setting bin apps to executable
  • Issue 14; 3.1.3: DTD events are now all being passed by StreamParser Some of the DTD events were not being passed through by the stream parser.
  • #26: Element#add_element(nil) now raises an error Changed XPath searches so that if a non-Hash is passed, an error is raised Fixed a spurrious undefined method error in encoding. #29: XPath ordering bug fixed by Mark Williams. Incidentally, Mark supplied a superlative bug report, including a full unit test. Then he went ahead and fixed the bug. It doesn't get any better than this, folks.
  • Fixed a broken link. Thanks to Dick Davies for pointing it out. Added functions courtesy of Michael Neumann mneumann@xxxx.de. Example code to follow.
  • Added Michael's sample code. Merged the changes in from branches/xpath_V
  • Fixed preceding:: and following:: axis Fixed the ordering bug that Martin Fowler reported.
  • Uncommented some code commented for testing Applied Nobu's changes to the Encoding infrastructure, which should fix potential threading issues.
  • Added more tests, and the missing syncenumerator class. Fixed the inheritance bug in the pull parser that James Britt found. Indentation changes, and changed some exceptions to runtime exceptions.
  • Changes by Matz, mostly of indent -> indent_level, to avoid function/variable naming conflicts
  • Tabs -> spaces (whitespace)

Note the addition of syncenumerator.rb. This is a stopgap, until I can work on
the class enough to get it accepted as a replacement for the SyncEnumerator
that comes with the Generator class. My version is orders of magnitude faster
than the Generator SyncEnumerator, but is currently missing a couple of
features of the original. Eventually, I expect this class to migrate to
another part of the source tree.

Revision 10092
Added by ser (Sean Russell) almost 12 years ago

Short summary:

This is a version bump to REXML 3.1.4 for Ruby HEAD. This change log is
identical to the log for the 1.8 branch.

It includes numerous bug fixes and is a pretty big patch, but is nonetheless
a minor revision bump, since the API hasn't changed.

For more information, see:

http:/www.germane-software.com/projects/rexml/milestone/3.1.4

For all tickets, see:

http://www.germane-software.com/projects/rexml/ticket/#

Where '#' is replaced with the ticket number.

Changelog:

  • Fixed the documentation WRT the raw mode of text nodes (ticket #4)
  • Fixes roundup ticket #43: substring-after bug.
  • Fixed ticket #44, Element#xpath
  • Patch submitted by an anonymous doner to allow parsing of Tempfiles. I was hoping that, by now, that whole Source thing would have been changed to use duck typing and avoid this sort of ticket... but in the meantime, the patch has been applied.
  • Fixes ticket:30, XPath default namespace bug. The fix was provided by Lucas Nussbaum.
  • Aliases #size to #length, as per zdennis's request.
  • Fixes typo from previous commit
  • Fixes ticket #32, preceding-sibling fails attempting delete_if on nil nodeset
  • Merges a user-contributed patch for ticket #40
  • Adds a forgotten-to-commit unit test for ticket #32
  • Changes Date, Version, and Copyright to upper case, to avoid conflicts with the Date class. All of the other changes in the altered files are because Subversion doesn't allow block-level commits, like it should. English cased Version and Copyright are aliased to the upper case versions, for partial backward compatability.
  • Resolves ticket #34, SAX parser change makes it impossible to parse IO feeds.
  • Moves parser.source.position() to parser.position()
  • Fixes ticket:48, repeated writes munging text content
  • Fixes ticket:46, adding methods for accessing notation DTD information.
  • Encodes some characters and removes a brokes link in the documentation
  • Deals with carriage returns after XML declarations
  • Improved doctype handling
  • Whitespace handling changes
  • Applies a patch by David Tardon, which (incidentally) fixes ticket:50
  • Closes #26, allowing anything that walks like an IO to be a source.
  • Ticket #31 - One unescape too many This wasn't really a bug, per se... "value" always returns a normalized string, and "value" is the method used to get the text() of an element. However, entities have no meaning in CDATA sections, so there's no justification for value to be normalizing the content of CData objects. This behavior has therefore been changed.
  • Ticket #45 -- Now parses notation declarations in DTDs properly.
  • Resolves ticket #49, Document.parse_stream returns ArgumentError
  • Adds documentation to clarify how XMLDecl works, to avoid invalid bug reports.
  • Addresses ticket #10, fixing the StreamParser API for DTDs.
  • Fixes ticket #42, XPath node-set function 'name' fails with relative node set parameter
  • Good patch by Aaron to fix ticket #53: REXML ignoring unbalanced tags at the end of a document.

Revision 10092
Added by ser (Sean Russell) almost 12 years ago

Short summary:

This is a version bump to REXML 3.1.4 for Ruby HEAD. This change log is
identical to the log for the 1.8 branch.

It includes numerous bug fixes and is a pretty big patch, but is nonetheless
a minor revision bump, since the API hasn't changed.

For more information, see:

http:/www.germane-software.com/projects/rexml/milestone/3.1.4

For all tickets, see:

http://www.germane-software.com/projects/rexml/ticket/#

Where '#' is replaced with the ticket number.

Changelog:

  • Fixed the documentation WRT the raw mode of text nodes (ticket #4)
  • Fixes roundup ticket #43: substring-after bug.
  • Fixed ticket #44, Element#xpath
  • Patch submitted by an anonymous doner to allow parsing of Tempfiles. I was hoping that, by now, that whole Source thing would have been changed to use duck typing and avoid this sort of ticket... but in the meantime, the patch has been applied.
  • Fixes ticket:30, XPath default namespace bug. The fix was provided by Lucas Nussbaum.
  • Aliases #size to #length, as per zdennis's request.
  • Fixes typo from previous commit
  • Fixes ticket #32, preceding-sibling fails attempting delete_if on nil nodeset
  • Merges a user-contributed patch for ticket #40
  • Adds a forgotten-to-commit unit test for ticket #32
  • Changes Date, Version, and Copyright to upper case, to avoid conflicts with the Date class. All of the other changes in the altered files are because Subversion doesn't allow block-level commits, like it should. English cased Version and Copyright are aliased to the upper case versions, for partial backward compatability.
  • Resolves ticket #34, SAX parser change makes it impossible to parse IO feeds.
  • Moves parser.source.position() to parser.position()
  • Fixes ticket:48, repeated writes munging text content
  • Fixes ticket:46, adding methods for accessing notation DTD information.
  • Encodes some characters and removes a brokes link in the documentation
  • Deals with carriage returns after XML declarations
  • Improved doctype handling
  • Whitespace handling changes
  • Applies a patch by David Tardon, which (incidentally) fixes ticket:50
  • Closes #26, allowing anything that walks like an IO to be a source.
  • Ticket #31 - One unescape too many This wasn't really a bug, per se... "value" always returns a normalized string, and "value" is the method used to get the text() of an element. However, entities have no meaning in CDATA sections, so there's no justification for value to be normalizing the content of CData objects. This behavior has therefore been changed.
  • Ticket #45 -- Now parses notation declarations in DTDs properly.
  • Resolves ticket #49, Document.parse_stream returns ArgumentError
  • Adds documentation to clarify how XMLDecl works, to avoid invalid bug reports.
  • Addresses ticket #10, fixing the StreamParser API for DTDs.
  • Fixes ticket #42, XPath node-set function 'name' fails with relative node set parameter
  • Good patch by Aaron to fix ticket #53: REXML ignoring unbalanced tags at the end of a document.

Revision 10092
Added by ser (Sean Russell) almost 12 years ago

Short summary:

This is a version bump to REXML 3.1.4 for Ruby HEAD. This change log is
identical to the log for the 1.8 branch.

It includes numerous bug fixes and is a pretty big patch, but is nonetheless
a minor revision bump, since the API hasn't changed.

For more information, see:

http:/www.germane-software.com/projects/rexml/milestone/3.1.4

For all tickets, see:

http://www.germane-software.com/projects/rexml/ticket/#

Where '#' is replaced with the ticket number.

Changelog:

  • Fixed the documentation WRT the raw mode of text nodes (ticket #4)
  • Fixes roundup ticket #43: substring-after bug.
  • Fixed ticket #44, Element#xpath
  • Patch submitted by an anonymous doner to allow parsing of Tempfiles. I was hoping that, by now, that whole Source thing would have been changed to use duck typing and avoid this sort of ticket... but in the meantime, the patch has been applied.
  • Fixes ticket:30, XPath default namespace bug. The fix was provided by Lucas Nussbaum.
  • Aliases #size to #length, as per zdennis's request.
  • Fixes typo from previous commit
  • Fixes ticket #32, preceding-sibling fails attempting delete_if on nil nodeset
  • Merges a user-contributed patch for ticket #40
  • Adds a forgotten-to-commit unit test for ticket #32
  • Changes Date, Version, and Copyright to upper case, to avoid conflicts with the Date class. All of the other changes in the altered files are because Subversion doesn't allow block-level commits, like it should. English cased Version and Copyright are aliased to the upper case versions, for partial backward compatability.
  • Resolves ticket #34, SAX parser change makes it impossible to parse IO feeds.
  • Moves parser.source.position() to parser.position()
  • Fixes ticket:48, repeated writes munging text content
  • Fixes ticket:46, adding methods for accessing notation DTD information.
  • Encodes some characters and removes a brokes link in the documentation
  • Deals with carriage returns after XML declarations
  • Improved doctype handling
  • Whitespace handling changes
  • Applies a patch by David Tardon, which (incidentally) fixes ticket:50
  • Closes #26, allowing anything that walks like an IO to be a source.
  • Ticket #31 - One unescape too many This wasn't really a bug, per se... "value" always returns a normalized string, and "value" is the method used to get the text() of an element. However, entities have no meaning in CDATA sections, so there's no justification for value to be normalizing the content of CData objects. This behavior has therefore been changed.
  • Ticket #45 -- Now parses notation declarations in DTDs properly.
  • Resolves ticket #49, Document.parse_stream returns ArgumentError
  • Adds documentation to clarify how XMLDecl works, to avoid invalid bug reports.
  • Addresses ticket #10, fixing the StreamParser API for DTDs.
  • Fixes ticket #42, XPath node-set function 'name' fails with relative node set parameter
  • Good patch by Aaron to fix ticket #53: REXML ignoring unbalanced tags at the end of a document.

Revision 10092
Added by ser (Sean Russell) almost 12 years ago

Short summary:

This is a version bump to REXML 3.1.4 for Ruby HEAD. This change log is
identical to the log for the 1.8 branch.

It includes numerous bug fixes and is a pretty big patch, but is nonetheless
a minor revision bump, since the API hasn't changed.

For more information, see:

http:/www.germane-software.com/projects/rexml/milestone/3.1.4

For all tickets, see:

http://www.germane-software.com/projects/rexml/ticket/#

Where '#' is replaced with the ticket number.

Changelog:

  • Fixed the documentation WRT the raw mode of text nodes (ticket #4)
  • Fixes roundup ticket #43: substring-after bug.
  • Fixed ticket #44, Element#xpath
  • Patch submitted by an anonymous doner to allow parsing of Tempfiles. I was hoping that, by now, that whole Source thing would have been changed to use duck typing and avoid this sort of ticket... but in the meantime, the patch has been applied.
  • Fixes ticket:30, XPath default namespace bug. The fix was provided by Lucas Nussbaum.
  • Aliases #size to #length, as per zdennis's request.
  • Fixes typo from previous commit
  • Fixes ticket #32, preceding-sibling fails attempting delete_if on nil nodeset
  • Merges a user-contributed patch for ticket #40
  • Adds a forgotten-to-commit unit test for ticket #32
  • Changes Date, Version, and Copyright to upper case, to avoid conflicts with the Date class. All of the other changes in the altered files are because Subversion doesn't allow block-level commits, like it should. English cased Version and Copyright are aliased to the upper case versions, for partial backward compatability.
  • Resolves ticket #34, SAX parser change makes it impossible to parse IO feeds.
  • Moves parser.source.position() to parser.position()
  • Fixes ticket:48, repeated writes munging text content
  • Fixes ticket:46, adding methods for accessing notation DTD information.
  • Encodes some characters and removes a brokes link in the documentation
  • Deals with carriage returns after XML declarations
  • Improved doctype handling
  • Whitespace handling changes
  • Applies a patch by David Tardon, which (incidentally) fixes ticket:50
  • Closes #26, allowing anything that walks like an IO to be a source.
  • Ticket #31 - One unescape too many This wasn't really a bug, per se... "value" always returns a normalized string, and "value" is the method used to get the text() of an element. However, entities have no meaning in CDATA sections, so there's no justification for value to be normalizing the content of CData objects. This behavior has therefore been changed.
  • Ticket #45 -- Now parses notation declarations in DTDs properly.
  • Resolves ticket #49, Document.parse_stream returns ArgumentError
  • Adds documentation to clarify how XMLDecl works, to avoid invalid bug reports.
  • Addresses ticket #10, fixing the StreamParser API for DTDs.
  • Fixes ticket #42, XPath node-set function 'name' fails with relative node set parameter
  • Good patch by Aaron to fix ticket #53: REXML ignoring unbalanced tags at the end of a document.

Revision 61565
Added by shyouhei (Shyouhei Urabe) 16 days ago

fix SEGV touching uninitialized memory

This function can be called from rb_data_typed_object_zalloc().
No assumption can be made about object internals.

(lldb) run
Process 22135 launched: './miniruby' (x86_64)
Process 22135 stopped
* thread #1: tid = 0x14a3af, 0x000000010008ac8a minirubyvm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
frame #0: 0x000000010008ac8a miniruby
vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364
1361 break;
1362 }
1363 #endif
-> 1364 return block->type;
1365 }
1366
1367 static inline void
(lldb) bt
* thread #1: tid = 0x14a3af, 0x000000010008ac8a minirubyvm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
* frame #0: 0x000000010008ac8a miniruby
vm_block_type(block=0x0000000000000000) + 12 at vm_core.h:1364
frame #1: 0x000000010008acdb minirubyvm_block_iseq(block=0x0000000000000000) + 24 at vm_core.h:1399
frame #2: 0x000000010008acc1 miniruby
vm_proc_iseq(procval=4310866360) + 32 at vm_core.h:1387
frame #3: 0x000000010009cbed minirubyrb_raw_obj_info(buff="0x0000000100f299b8 [0 ] proc (Proc)", buff_size=256, obj=4310866360) + 1513 at gc.c:9349
frame #4: 0x000000010009cf01 miniruby
obj_info(obj=4310866360) + 98 at gc.c:9428
frame #5: 0x000000010008ca1b minirubynewobj_init(klass=4311027960, flags=12, v1=4298186080, v2=1, v3=0, wb_protected=32, objspace=0x00000001007cf280, obj=4310866360) + 338 at gc.c:1887
frame #6: 0x000000010008cce5 miniruby
newobj_of(klass=4311027960, flags=12, v1=4298186080, v2=1, v3=0, wb_protected=32) + 171 at gc.c:1970
frame #7: 0x000000010008d01d minirubyrb_data_typed_object_wrap(klass=4311027960, datap=0x0000000000000000, type=0x0000000100311d60) + 133 at gc.c:2062
frame #8: 0x000000010008d04e miniruby
rb_data_typed_object_zalloc(klass=4311027960, size=40, type=0x0000000100311d60) + 42 at gc.c:2073
frame #9: 0x000000010011b459 minirubyrb_proc_alloc(klass=4311027960) + 36 at proc.c:113
frame #10: 0x0000000100204d8e miniruby
vm_proc_create_from_captured(klass=4311027960, captured=0x00000001025003f8, block_type=block_type_iseq, is_from_method='\0', is_lambda='\x01') + 44 at vm.c:814
frame #11: 0x00000001002050d8 minirubyrb_vm_make_proc_lambda(ec=0x00000001007cf548, captured=0x00000001025003f8, klass=4311027960, is_lambda='\x01') + 134 at vm.c:892
frame #12: 0x000000010011c0d2 miniruby
proc_new(klass=4311027960, is_lambda='\x01') + 445 at proc.c:752
frame #13: 0x000000010011c154 minirubyrb_block_lambda + 27 at proc.c:808
frame #14: 0x00000001001ee7e3 miniruby
call_cfunc_0(func=(minirubyrb_block_lambda at proc.c:807), recv=4310991600, argc=0, argv=0x0000000102400480) + 41 at vm_insnhelper.c:1729
frame #15: 0x00000001001ef2c3 miniruby
vm_call_cfunc_with_frame(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 386 at vm_insnhelper.c:1918
frame #16: 0x00000001001ef412 minirubyvm_call_cfunc(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 149 at vm_insnhelper.c:1934
frame #17: 0x00000001001f0655 miniruby
vm_call_method_each_type(ec=0x00000001007cf548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 239 at vm_insnhelper.c:2232
frame #18: 0x00000001001f0ce0 minirubyvm_call_method(ec=0x00000001007cf548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 117 at vm_insnhelper.c:2355
frame #19: 0x00000001001f0eb6 miniruby
vm_call_general(ec=0x00000001007cf548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd4d0, ci=0x0000000102537be0, cc=0x000000010253e0f0) + 59 at vm_insnhelper.c:2398
frame #20: 0x00000001001f6e61 minirubyvm_exec_core(ec=0x00000001007cf548, initial=0) + 7480 at insns.def:850
frame #21: 0x0000000100207995 miniruby
vm_exec(ec=0x00000001007cf548) + 230 at vm.c:1771
frame #22: 0x0000000100208647 minirubyrb_iseq_eval_main(iseq=0x0000000100f29fd0) + 52 at vm.c:2019
frame #23: 0x000000010007b750 miniruby
ruby_exec_internal(n=0x0000000100f29fd0) + 297 at eval.c:246
frame #24: 0x000000010007b876 minirubyruby_exec_node(n=0x0000000100f29fd0) + 36 at eval.c:310
frame #25: 0x000000010007b849 miniruby
ruby_run_node(n=0x0000000100f29fd0) + 62 at eval.c:302
frame #26: 0x0000000100000c05 minirubymain(argc=2, argv=0x00007fff5fbfdbf0) + 113 at main.c:42
frame #27: 0x00007fff88eda5ad libdyld.dylib
start + 1
(lldb)

Revision 61568
Added by shyouhei (Shyouhei Urabe) 16 days ago

fix SEGV inspecting already freed objects

obj_info() assumes the given object is alive. Passing freed
objects to it results in SEGV.

(lldb) run
Process 29718 launched: './miniruby' (x86_64)
Process 29718 stopped
* thread #1: tid = 0x3082c5, 0x00000001000bfaab minirubypathobj_path(pathobj=4478683640) + 70 at vm_core.h:269, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x00000001000bfaab miniruby
pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269
266 }
267 else {
268 VM_ASSERT(RB_TYPE_P(pathobj, T_ARRAY));
-> 269 return RARRAY_AREF(pathobj, PATHOBJ_PATH);
270 }
271 }
272
(lldb) bt
* thread #1: tid = 0x3082c5, 0x00000001000bfaab minirubypathobj_path(pathobj=4478683640) + 70 at vm_core.h:269, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
* frame #0: 0x00000001000bfaab miniruby
pathobj_path(pathobj=4478683640) + 70 at vm_core.h:269
frame #1: 0x00000001000c25ff minirubyrb_iseq_path(iseq=0x000000010af34a20) + 32 at iseq.c:723
frame #2: 0x000000010009db09 miniruby
rb_raw_iseq_info(buff="0x000000010af34a20 [1 ] T_IMEMO iseq", buff_size=256, iseq=0x000000010af34a20) + 69 at gc.c:9274
frame #3: 0x000000010009e45a minirubyrb_raw_obj_info(buff="0x000000010af34a20 [1 ] T_IMEMO iseq", buff_size=256, obj=4478683680) + 2191 at gc.c:9397
frame #4: 0x000000010009e4d5 miniruby
obj_info(obj=4478683680) + 98 at gc.c:9429
frame #5: 0x0000000100091ae3 minirubygc_page_sweep(objspace=0x00000001007d3280, heap=0x00000001007d32a0, sweep_page=0x000000010ae07bc0) + 622 at gc.c:3529
frame #6: 0x000000010009206a miniruby
gc_sweep_step(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 188 at gc.c:3705
frame #7: 0x0000000100092254 minirubygc_sweep_continue(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 133 at gc.c:3772
frame #8: 0x000000010008d7f9 miniruby
heap_prepare(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 48 at gc.c:1746
frame #9: 0x000000010008d8a1 minirubyheap_get_freeobj_from_next_freepage(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 37 at gc.c:1769
frame #10: 0x000000010008d98d miniruby
heap_get_freeobj(objspace=0x00000001007d3280, heap=0x00000001007d32a0) + 83 at gc.c:1803
frame #11: 0x000000010008dcb0 minirubynewobj_slowpath(klass=4334386280, flags=5, v1=0, v2=0, v3=0, objspace=0x00000001007d3280, wb_protected=1) + 220 at gc.c:1930
frame #12: 0x000000010008dd6c miniruby
newobj_slowpath_wb_protected(klass=4334386280, flags=5, v1=0, v2=0, v3=0, objspace=0x00000001007d3280) + 76 at gc.c:1942
frame #13: 0x000000010008dea1 minirubynewobj_of(klass=4334386280, flags=5, v1=0, v2=0, v3=0, wb_protected=1) + 221 at gc.c:1974
frame #14: 0x000000010008df39 miniruby
rb_wb_protected_newobj_of(klass=4334386280, flags=5) + 54 at gc.c:1990
frame #15: 0x0000000100195f7c minirubystr_alloc(klass=4334386280) + 29 at string.c:692
frame #16: 0x0000000100195fe9 miniruby
str_new0(klass=4334386280, ptr="gitm", len=4, termlen=1) + 73 at string.c:714
frame #17: 0x000000010019633e minirubyrb_enc_str_new(ptr="gitm", len=4, enc=0x00000001025d50a0) + 81 at string.c:766
frame #18: 0x000000010010a80a miniruby
parser_str_new(p="gitm", n=4, enc=0x00000001025d50a0, func=66, enc0=0x00000001025d50a0) + 50 at parse.y:5817
frame #19: 0x000000010010ce1a minirubyparser_parse_string(parser=0x00000001042ac5c0, quote=0x000000010460c028) + 795 at parse.y:6675
frame #20: 0x00000001001120bd miniruby
parser_yylex(parser=0x00000001042ac5c0) + 159 at parse.y:8281
frame #21: 0x0000000100115068 minirubyyylex(lval=0x00007fff5fbf9948, yylloc=0x00007fff5fbf9ab0, parser=0x00000001042ac5c0) + 55 at parse.y:8931
frame #22: 0x00000001000fc79f miniruby
ruby_yyparse(parser=0x00000001042ac5c0) + 1198 at parse.c:5798
frame #23: 0x0000000100109f5a minirubyyycompile0(arg=4364879296) + 317 at parse.y:5595
frame #24: 0x0000000100214ef0 miniruby
rb_suppress_tracing(func=(minirubyyycompile0 at parse.y:5565), arg=4364879296) + 349 at vm_trace.c:397
frame #25: 0x000000010010a1df miniruby
yycompile(parser=0x00000001042ac5c0, fname=4443743440, line=1) + 126 at parse.y:5637
frame #26: 0x000000010010a4c1 minirubyparser_compile_string(vparser=4443743480, fname=4443743440, s=4443743520, line=1) + 191 at parse.y:5706
frame #27: 0x000000010010a5b7 miniruby
rb_parser_compile_string_path(vparser=4443743480, f=4443743440, s=4443743520, line=1) + 58 at parse.y:5730
frame #28: 0x0000000100206025 minirubyeval_make_iseq(src=4443743520, fname=4443743440, line=1, bind=0x0000000000000000, base_block=0x00007fff5fbfb370) + 266 at vm_eval.c:1274
frame #29: 0x0000000100206153 miniruby
eval_string_with_cref(self=4334412520, src=4443743520, cref=0x0000000000000000, file=52, line=1) + 197 at vm_eval.c:1307
frame #30: 0x0000000100206389 minirubyrb_f_eval(argc=1, argv=0x0000000102400eb8, self=4334412520) + 219 at vm_eval.c:1382
frame #31: 0x00000001001f247c miniruby
call_cfunc_m1(func=(minirubyrb_f_eval at vm_eval.c:1364), recv=4334412520, argc=1, argv=0x0000000102400eb8) + 47 at vm_insnhelper.c:1723
frame #32: 0x00000001001f2f87 miniruby
vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500d80, calling=0x00007fff5fbfbf50, ci=0x000000010263f240, cc=0x0000000100749b50) + 386 at vm_insnhelper.c:1918
frame #33: 0x00000001001f30d6 minirubyvm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500d80, calling=0x00007fff5fbfbf50, ci=0x000000010263f240, cc=0x0000000100749b50) + 149 at vm_insnhelper.c:1934
frame #34: 0x00000001001faf0e miniruby
vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915
frame #35: 0x000000010020b75d minirubyvm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
frame #36: 0x00000001002093f8 miniruby
invoke_block(ec=0x00000001007d3548, iseq=0x000000010252d7f0, self=4334412520, captured=0x0000000102500df8, cref=0x0000000000000000, type=572653569, opt_pc=0) + 224 at vm.c:988
frame #37: 0x0000000100209766 minirubyinvoke_iseq_block_from_c(ec=0x00000001007d3548, captured=0x0000000102500df8, self=4334412520, argc=0, argv=0x0000000000000000, passed_block_handler=0, cref=0x0000000000000000, is_lambda=0) + 389 at vm.c:1040
frame #38: 0x0000000100209824 miniruby
invoke_block_from_c_bh(ec=0x00000001007d3548, block_handler=4333768185, argc=0, argv=0x0000000000000000, passed_block_handler=0, cref=0x0000000000000000, is_lambda=0, force_blockarg=0) + 138 at vm.c:1058
frame #39: 0x00000001002099d0 minirubyvm_yield(ec=0x00000001007d3548, argc=0, argv=0x0000000000000000) + 69 at vm.c:1103
frame #40: 0x0000000100205623 miniruby
rb_yield_0(argc=0, argv=0x0000000000000000) + 40 at vm_eval.c:970
frame #41: 0x0000000100205964 minirubyloop_i + 19 at vm_eval.c:1049
frame #42: 0x000000010007db07 miniruby
rb_rescue2(b_proc=(minirubyloop_i at vm_eval.c:1047), data1=0, r_proc=(minirubyloop_stop at vm_eval.c:1056), data2=0) + 369 at eval.c:896
frame #43: 0x0000000100205a2e minirubyrb_f_loop(self=4334412520) + 121 at vm_eval.c:1100
frame #44: 0x00000001001f24a7 miniruby
call_cfunc_0(func=(minirubyrb_f_loop at vm_eval.c:1098), recv=4334412520, argc=0, argv=0x0000000102400e80) + 41 at vm_insnhelper.c:1729
frame #45: 0x00000001001f2f87 miniruby
vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 386 at vm_insnhelper.c:1918
frame #46: 0x00000001001f30d6 minirubyvm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 149 at vm_insnhelper.c:1934
frame #47: 0x00000001001f4319 miniruby
vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 239 at vm_insnhelper.c:2232
frame #48: 0x00000001001f4a2c minirubyvm_call_method(ec=0x00000001007d3548, cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 253 at vm_insnhelper.c:2366
frame #49: 0x00000001001f4b7a miniruby
vm_call_general(ec=0x00000001007d3548, reg_cfp=0x0000000102500de0, calling=0x00007fff5fbfd4d0, ci=0x000000010263bbf0, cc=0x0000000102642118) + 59 at vm_insnhelper.c:2398
frame #50: 0x00000001001fab2f minirubyvm_exec_core(ec=0x00000001007d3548, initial=0) + 7480 at insns.def:850
frame #51: 0x000000010020b75d miniruby
vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
frame #52: 0x000000010020c40f minirubyrb_iseq_eval_main(iseq=0x000000010252dd90) + 52 at vm.c:2019
frame #53: 0x000000010007c768 miniruby
ruby_exec_internal(n=0x000000010252dd90) + 297 at eval.c:246
frame #54: 0x000000010007c88e minirubyruby_exec_node(n=0x000000010252dd90) + 36 at eval.c:310
frame #55: 0x000000010007c861 miniruby
ruby_run_node(n=0x000000010252dd90) + 62 at eval.c:302
frame #56: 0x000000010000138d minirubymain(argc=2, argv=0x00007fff5fbfdbf0) + 113 at main.c:42
frame #57: 0x00007fff88eda5ad libdyld.dylib
start + 1
(lldb) p ((struct RVALUE*)pathobj)->as.basic
(RBasic) $0 = (flags = 0, klass = 4478683600)
(lldb)

Revision 61569
Added by shyouhei (Shyouhei Urabe) 16 days ago

fix SEGV inspecting uninitialized objects

obj_info() assumes the given object is alive. OTOH
gc_writebarrier_incremental is called before or in middle of
object initialization. Can casue SEGV.

(lldb) run
Process 48188 launched: './miniruby' (x86_64)
Process 48188 stopped
* thread #1: tid = 0x30fd53, 0x00000001000bf7a9 minirubyrb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
frame #0: 0x00000001000bf7a9 miniruby
rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072
2069 static inline const VALUE *
2070 rb_array_const_ptr(VALUE a)
2071 {
-> 2072 return FIX_CONST_VALUE_PTR((RBASIC(a)->flags & RARRAY_EMBED_FLAG) ?
2073 RARRAY(a)->as.ary : RARRAY(a)->as.heap.ptr);
2074 }
2075
(lldb) bt
* thread #1: tid = 0x30fd53, 0x00000001000bf7a9 minirubyrb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
* frame #0: 0x00000001000bf7a9 miniruby
rb_array_const_ptr(a=5251291222225483145) + 12 at ruby.h:2072
frame #1: 0x00000001000bfaab minirubypathobj_path(pathobj=5251291222225483145) + 70 at vm_core.h:269
frame #2: 0x00000001000c25ff miniruby
rb_iseq_path(iseq=0x00000001025b71a8) + 32 at iseq.c:723
frame #3: 0x000000010009db09 minirubyrb_raw_iseq_info(buff="0x00000001025b7158 [0 ] proc (Proc)", buff_size=256, iseq=0x00000001025b71a8) + 69 at gc.c:9274
frame #4: 0x000000010009e1d5 miniruby
rb_raw_obj_info(buff="0x00000001025b7158 [0 ] proc (Proc)", buff_size=256, obj=4334514520) + 1546 at gc.c:9351
frame #5: 0x000000010009e4d5 minirubyobj_info(obj=4334514520) + 98 at gc.c:9429
frame #6: 0x0000000100096658 miniruby
gc_writebarrier_incremental(a=4334514520, b=4334514600, objspace=0x00000001007d3280) + 61 at gc.c:5963
frame #7: 0x00000001000968ca minirubyrb_gc_writebarrier(a=4334514520, b=4334514600) + 127 at gc.c:6009
frame #8: 0x00000001001eabe0 miniruby
rb_obj_written(a=4334514520, oldv=52, b=4334514600, filename="/Users/urabe.shyouhei/data/src/pedantic/vm.c", line=821) + 72 at ruby.h:1472
frame #9: 0x00000001001eac2c minirubyrb_obj_write(a=4334514520, slot=0x000000010259ff10, b=4334514600, filename="/Users/urabe.shyouhei/data/src/pedantic/vm.c", line=821) + 70 at ruby.h:1489
frame #10: 0x0000000100208b6f miniruby
vm_proc_create_from_captured(klass=4311027960, captured=0x0000000102500338, block_type=block_type_ifunc, is_from_method='\0', is_lambda='\x01') + 137 at vm.c:821
frame #11: 0x0000000100208e5c minirubyrb_vm_make_proc_lambda(ec=0x00000001007d3548, captured=0x0000000102500338, klass=4311027960, is_lambda='\x01') + 134 at vm.c:892
frame #12: 0x000000010011f08e miniruby
proc_new(klass=4311027960, is_lambda='\x01') + 445 at proc.c:752
frame #13: 0x000000010011f110 minirubyrb_block_lambda + 27 at proc.c:808
frame #14: 0x00000001001f24a7 miniruby
call_cfunc_0(func=(minirubyrb_block_lambda at proc.c:807), recv=4310991600, argc=0, argv=0x0000000000000000) + 41 at vm_insnhelper.c:1729
frame #15: 0x00000001002033de miniruby
vm_call0_cfunc_with_frame(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 370 at vm_eval.c:85
frame #16: 0x00000001002034d9 minirubyvm_call0_cfunc(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 59 at vm_eval.c:100
frame #17: 0x000000010020368f miniruby
vm_call0_body(ec=0x00000001007d3548, calling=0x00007fff5fbfb080, ci=0x00007fff5fbfb070, cc=0x00007fff5fbfb0a0, argv=0x0000000000000000) + 436 at vm_eval.c:131
frame #18: 0x000000010020326a minirubyvm_call0(ec=0x00000001007d3548, recv=4310991600, id=2993, argc=0, argv=0x0000000000000000, me=0x0000000100f48110) + 142 at vm_eval.c:58
frame #19: 0x0000000100203c60 miniruby
rb_call0(ec=0x00000001007d3548, recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000, scope=CALL_FCALL, self=4334514640) + 166 at vm_eval.c:296
frame #20: 0x0000000100204827 minirubyrb_call(recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000, scope=CALL_FCALL) + 84 at vm_eval.c:589
frame #21: 0x000000010020518b miniruby
rb_funcallv(recv=4310991600, mid=2993, argc=0, argv=0x0000000000000000) + 52 at vm_eval.c:815
frame #22: 0x000000010012242e minirubymlambda(method=0) + 45 at proc.c:2661
frame #23: 0x0000000100205bac miniruby
rb_iterate0(it_proc=(minirubymlambda at proc.c:2660), data1=0, ifunc=0x00000001025b71a8, ec=0x00000001007d3548) + 380 at vm_eval.c:1134
frame #24: 0x0000000100205d16 miniruby
rb_iterate(it_proc=(minirubymlambda at proc.c:2660), data1=0, bl_proc=(minirubybmcall at proc.c:2666), data2=4334514640) + 88 at vm_eval.c:1166
frame #25: 0x00000001001224c7 minirubymethod_to_proc(method=4334514640) + 43 at proc.c:2701
frame #26: 0x00000001001f24a7 miniruby
call_cfunc_0(func=(minirubymethod_to_proc at proc.c:2688), recv=4334514640, argc=0, argv=0x0000000102400568) + 41 at vm_insnhelper.c:1729
frame #27: 0x00000001001f2f87 miniruby
vm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 386 at vm_insnhelper.c:1918
frame #28: 0x00000001001f30d6 minirubyvm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 149 at vm_insnhelper.c:1934
frame #29: 0x00000001001f4319 miniruby
vm_call_method_each_type(ec=0x00000001007d3548, cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 239 at vm_insnhelper.c:2232
frame #30: 0x00000001001f49a4 minirubyvm_call_method(ec=0x00000001007d3548, cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 117 at vm_insnhelper.c:2355
frame #31: 0x00000001001f4b7a miniruby
vm_call_general(ec=0x00000001007d3548, reg_cfp=0x0000000102500350, calling=0x00007fff5fbfc030, ci=0x0000000100f2ec70, cc=0x0000000102735718) + 59 at vm_insnhelper.c:2398
frame #32: 0x00000001001faf0e minirubyvm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915
frame #33: 0x000000010020b75d miniruby
vm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
frame #34: 0x000000010020c3d1 minirubyrb_iseq_eval(iseq=0x00000001007f8270) + 52 at vm.c:2008
frame #35: 0x00000001000caa4a miniruby
rb_load_internal0(ec=0x00000001007d3548, fname=4310799960, wrap=0) + 631 at load.c:611
frame #36: 0x00000001000cab36 minirubyrb_load_internal(fname=4310799960, wrap=0) + 46 at load.c:642
frame #37: 0x00000001000cae1d miniruby
rb_f_load(argc=1, argv=0x00000001024004b8) + 217 at load.c:710
frame #38: 0x00000001001f247c minirubycall_cfunc_m1(func=(minirubyrb_f_load at load.c:695), recv=4311327440, argc=1, argv=0x00000001024004b8) + 47 at vm_insnhelper.c:1723
frame #39: 0x00000001001f2f87 minirubyvm_call_cfunc_with_frame(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 386 at vm_insnhelper.c:1918
frame #40: 0x00000001001f30d6 miniruby
vm_call_cfunc(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 149 at vm_insnhelper.c:1934
frame #41: 0x00000001001f4319 minirubyvm_call_method_each_type(ec=0x00000001007d3548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 239 at vm_insnhelper.c:2232
frame #42: 0x00000001001f4a2c miniruby
vm_call_method(ec=0x00000001007d3548, cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 253 at vm_insnhelper.c:2366
frame #43: 0x00000001001f4b7a minirubyvm_call_general(ec=0x00000001007d3548, reg_cfp=0x00000001025003e0, calling=0x00007fff5fbfd3e0, ci=0x0000000102541070, cc=0x0000000100f9e918) + 59 at vm_insnhelper.c:2398
frame #44: 0x00000001001faf0e miniruby
vm_exec_core(ec=0x00000001007d3548, initial=0) + 8471 at insns.def:915
frame #45: 0x000000010020b75d minirubyvm_exec(ec=0x00000001007d3548) + 230 at vm.c:1771
frame #46: 0x000000010020c40f miniruby
rb_iseq_eval_main(iseq=0x0000000100f21240) + 52 at vm.c:2019
frame #47: 0x000000010007c774 minirubyruby_exec_internal(n=0x0000000100f21240) + 297 at eval.c:246
frame #48: 0x000000010007c89a miniruby
ruby_exec_node(n=0x0000000100f21240) + 36 at eval.c:310
frame #49: 0x000000010007c86d minirubyruby_run_node(n=0x0000000100f21240) + 62 at eval.c:302
frame #50: 0x0000000100001399 miniruby
main(argc=9, argv=0x00007fff5fbfdae0) + 113 at main.c:42
frame #51: 0x00007fff88eda5ad libdyld.dylib`start + 1
(lldb)

History

#1 Updated by matz (Yukihiro Matsumoto) over 9 years ago

  • Due date set to 06/03/2008
  • Status changed from Open to Closed
  • Assignee set to knu (Akinori MUSHA)

=begin

=end

#2 Updated by knu (Akinori MUSHA) over 9 years ago

  • % Done changed from 0 to 100

=begin
Committed to trunk and ruby_1_8, thanks!
=end

Also available in: Atom PDF