# New Ticket Created by Vladimir Marek # Please include the string: [perl #131666] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=131666 >
I took the NativeCall sample from here: https://perl6advent.wordpress.com/2015/12/21/day-21-nativecall-backs-and-beyond-c/ -------------------------------------------------------------------------------- use NativeCall; sub XML_SetElementHandler(OpaquePointer $parser, &start (OpaquePointer, Str, CArray[Str]), &end (OpaquePointer, Str)) is native('expat') { ... } sub XML_ParserCreate(Str --> OpaquePointer) is native('expat') { ... } sub XML_ParserFree(OpaquePointer) is native('expat') { ... } sub XML_Parse(OpaquePointer, Buf, int32, int32 --> int32) is native('expat') { ... } my $xml = q:to/XML/; <calendar> <advent day="21"> <topic title="NativeCall Bits and Pieces"/> </advent> </calendar> XML my $depth = 0; sub start-element($, $elem, $attr) { say "open $elem".indent($depth * 4); ++$depth; } sub end-element($, $elem) { --$depth; say "close $elem".indent($depth * 4); } my $parser = XML_ParserCreate('UTF-8'); XML_SetElementHandler($parser, &start-element, &end-element); my $buf = $xml.encode('UTF-8'); XML_Parse($parser, $buf, $buf.elems, 1); XML_ParserFree($parser); -------------------------------------------------------------------------------- All works fine, unless I try to use the $attr in start-element sub start-element($, $elem, $attr) { say "open $elem".indent($depth * 4); say $attr.elems; ++$depth; } The program then terminates with: MoarVM panic: Internal error: Unwound entire stack and missed handler I have seen that on Solaris, but Linux has the same issue. In both cases custom build perl6 using 'rakudobrew build moar' so I suppose latest git revision. Thank you -- Vlad