FWIW, running under valgrind gives:
uniqua:~/parrot $ valgrind ./parrot segfault.pir
==19577== Memcheck, a memory error detector.
==19577== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et
al.
==19577== Using LibVEX rev 1804, a library for dynamic binary
translation.
==19577== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==19577== Using valgrind-3.3.0, a dynamic binary instrumentation
framework.
==19577== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et
al.
==19577== For more details, rerun with: -v
==19577==
==19577== Invalid read of size 8
==19577== at 0x4D8FA70: Parrot_callmethodcc_p_sc (in /home/andy/
parrot/blib/lib/libparrot.so.0.5.2)
==19577== by 0x4E0D787: runops_slow_core (in /home/andy/parrot/blib/
lib/libparrot.so.0.5.2)
==19577== by 0x4DEB388: runops_int (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x4DEBD13: runops (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x4DEBE76: runops_args (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x4DEC56D: Parrot_runops_fromc_args (in /home/andy/
parrot/blib/lib/libparrot.so.0.5.2)
==19577== by 0x4DDACEA: Parrot_runcode (in /home/andy/parrot/blib/
lib/libparrot.so.0.5.2)
==19577== by 0x4EC00B0: imcc_run (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x400B28: main (in /home/andy/parrot/parrot)
==19577== Address 0x18 is not stack'd, malloc'd or (recently) free'd
==19577==
==19577== Process terminating with default action of signal 11 (SIGSEGV)
==19577== Access not within mapped region at address 0x18
==19577== at 0x4D8FA70: Parrot_callmethodcc_p_sc (in /home/andy/
parrot/blib/lib/libparrot.so.0.5.2)
==19577== by 0x4E0D787: runops_slow_core (in /home/andy/parrot/blib/
lib/libparrot.so.0.5.2)
==19577== by 0x4DEB388: runops_int (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x4DEBD13: runops (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x4DEBE76: runops_args (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x4DEC56D: Parrot_runops_fromc_args (in /home/andy/
parrot/blib/lib/libparrot.so.0.5.2)
==19577== by 0x4DDACEA: Parrot_runcode (in /home/andy/parrot/blib/
lib/libparrot.so.0.5.2)
==19577== by 0x4EC00B0: imcc_run (in /home/andy/parrot/blib/lib/
libparrot.so.0.5.2)
==19577== by 0x400B28: main (in /home/andy/parrot/parrot)
==19577==
==19577== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 5 from 1)
==19577== malloc/free: in use at exit: 4,157,913 bytes in 4,005 blocks.
==19577== malloc/free: 4,317 allocs, 312 frees, 4,243,181 bytes
allocated.
==19577== For counts of detected errors, rerun with: -v
==19577== searching for pointers to 4,005 not-freed blocks.
==19577== checked 4,945,376 bytes.
==19577==
==19577== LEAK SUMMARY:
==19577== definitely lost: 0 bytes in 0 blocks.
==19577== possibly lost: 0 bytes in 0 blocks.
==19577== still reachable: 4,157,913 bytes in 4,005 blocks.
==19577== suppressed: 0 bytes in 0 blocks.
==19577== Rerun with --leak-check=full to see details of leaked memory.
Segmentation fault