Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error with glibc backtrace dump when cmp used wrong #1094

Closed
p6rt opened this issue Jun 26, 2009 · 6 comments
Closed

Error with glibc backtrace dump when cmp used wrong #1094

p6rt opened this issue Jun 26, 2009 · 6 comments
Labels

Comments

@p6rt
Copy link

p6rt commented Jun 26, 2009

Migrated from rt.perl.org#67010 (status was 'resolved')

Searchable as RT67010$

@p6rt
Copy link
Author

p6rt commented Jun 26, 2009

From amoc.yn@gmail.com

rev​: 6c43f9

cmp works.
sort works.
coersion works.
wrong-dispatch works.
But, the last example makes (critical?) error.

<amoc> rakudo​: my @​list = 5,2,"9",True; say @​list.sort​: { $^a cmp $^b };
<p6eval> rakudo 6c43f9​: OUTPUT«1259␤»

<amoc> rakudo​: Code cmp 4;
<p6eval> rakudo 6c43f9​: OUTPUT«Multiple Dispatch​: No suitable candidate
found for 'cmp', with signature 'PP->I'␤in Main (/tmp/pXqBGHdfLN​:2)␤»

<amoc> rakudo​: my @​list = 1,2,Code; say @​list.sort​: { $^a cmp $^b };
<p6eval> rakudo 6c43f9​: OUTPUT«sh​: ./perl6​: No such file or directory␤»

I'm not sure it's rakudo bug. (it seems it's parrot bug)
But i report it here first anyway.

rakudo> my @​list = 1,2,Code; say @​list.sort​: { $^a cmp $^b }
*** glibc detected *** rakudo​: corrupted double-linked list​: 0x093ffb30 ***
======= Backtrace​: =========
/lib/tls/i686/cmov/libc.so.6[0xb6f2c604]
/lib/tls/i686/cmov/libc.so.6[0xb6f2e383]
/lib/tls/i686/cmov/libc.so.6(cfree+0x96)[0xb6f2e5b6]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0(mem_sys_free+0x2a)[0xb7d4f66a]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d509a7]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d62fea]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0(Parrot_exit+0x8b)[0xb7d469eb]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d460eb]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0(Parrot_ex_throw_from_c+0xb5)[0xb7d461a5]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d464a1]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0(Parrot_mmd_multi_dispatch_from_c_args+0x1e1)[0xb7d71601]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7eb97c7]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7f57577]
[0xb6c7cef8]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7ce43cd]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7da8e50]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7da7a4e]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d64691]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d64ab3]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0(Parrot_runops_fromc_args_reti+0xc6)[0xb7d656f6]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7db674e]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7db685e]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7f37137]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7ed7f20]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7cf2fbd]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7da8e50]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7da7a4e]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d64691]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0[0xb7d64ab3]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0(Parrot_runops_fromc_args+0xc6)[0xb7d65976]
/rakudo/parrot/blib/lib/libparrot.so.1.3.0(Parrot_runcode+0x277)[0xb7d42767]
rakudo[0x8048ab2]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb6ed3775]
rakudo[0x80488a1]
======= Memory map​: ========
08048000-0841e000 r-xp 00000000 08​:02 1483435 /rakudo/perl6
0841e000-0841f000 r--p 003d5000 08​:02 1483435 /rakudo/perl6
0841f000-08420000 rw-p 003d6000 08​:02 1483435 /rakudo/perl6
08de5000-09466000 rw-p 08de5000 00​:00 0 [heap]
b5739000-b573f000 r--s 00000000 08​:02 1502054
/rakudo/parrot/runtime/parrot/library/P6object.pbc
b5840000-b586e000 r--s 00000000 08​:02 1502126
/rakudo/parrot/runtime/parrot/library/PGE.pbc
b586e000-b5870000 r--s 00000000 08​:02 1502123
/rakudo/parrot/runtime/parrot/library/PCT/Grammar.pbc
b5870000-b5871000 r--s 00000000 08​:02 1502121
/rakudo/parrot/runtime/parrot/library/PCT.pbc
b6b43000-b6b4b000 r--s 00000000 08​:02 1502124
/rakudo/parrot/runtime/parrot/library/PCT/HLLCompiler.pbc
b6b4b000-b6b6e000 r--s 00000000 08​:02 1502122
/rakudo/parrot/runtime/parrot/library/PCT/PAST.pbc
b6b6e000-b6b70000 r--s 00000000 08​:02 1502064
/rakudo/parrot/runtime/parrot/library/PGE/Util.pbc
b6c00000-b6c21000 rw-p b6c00000 00​:00 0
b6c21000-b6d00000 ---p b6c21000 00​:00 0
b6dbd000-b6dbf000 rw-p b6dbd000 00​:00 0
b6dbf000-b6dcc000 r-xp 00000000 08​:02 507969 /lib/libgcc_s.so.1
b6dcc000-b6dcd000 r--p 0000c000 08​:02 507969 /lib/libgcc_s.so.1
b6dcd000-b6dce000 rw-p 0000d000 08​:02 507969 /lib/libgcc_s.so.1
b6dce000-b6eb2000 r-xp 00000000 08​:02 772517
/usr/lib/libstdc++.so.6.0.10
b6eb2000-b6eb6000 r--p 000e3000 08​:02 772517
/usr/lib/libstdc++.so.6.0.10
b6eb6000-b6eb7000 rw-p 000e7000 08​:02 772517
/usr/lib/libstdc++.so.6.0.10
b6eb7000-b6ebd000 rw-p b6eb7000 00​:00 0
b6ebd000-b7019000 r-xp 00000000 08​:02 525532 /lib/tls/i686/cmov/
libc-2.9.so
b7019000-b701a000 ---p 0015c000 08​:02 525532 /lib/tls/i686/cmov/
libc-2.9.so
b701a000-b701c000 r--p 0015c000 08​:02 525532 /lib/tls/i686/cmov/
libc-2.9.so
b701c000-b701d000 rw-p 0015e000 08​:02 525532 /lib/tls/i686/cmov/
libc-2.9.so
b701d000-b7021000 rw-p b701d000 00​:00 0
b7021000-b7af7000 r--p 00000000 08​:02 772190 /usr/lib/libicudata.so.38.1
b7af7000-b7af8000 r--p 00ad5000 08​:02 772190 /usr/lib/libicudata.so.38.1
b7af8000-b7c15000 r-xp 00000000 08​:02 772202 /usr/lib/libicuuc.so.38.1
b7c15000-b7c16000 ---p 0011d000 08​:02 772202 /usr/lib/libicuuc.so.38.1
b7c16000-b7c1e000 r--p 0011d000 08​:02 772202 /usr/lib/libicuuc.so.38.1
b7c1e000-b7c1f000 rw-p 00125000 08​:02 772202 /usr/lib/libicuuc.so.38.1
b7c1f000-b7c21000 rw-p b7c1f000 00​:00 0
b7c21000-b7c2a000 r-xp 00000000 08​:02 525536 /lib/tls/i686/cmov/
libcrypt-2.9.so
b7c2a000-b7c2b000 r--p 00008000 08​:02 525536 /lib/tls/i686/cmov/
libcrypt-2.9.so
b7c2b000-b7c2c000 rw-p 00009000 08​:02 525536 /lib/tls/i686/cmov/
libcrypt-2.9.so
b7c2c000-b7c53000 rw-p b7c2c000 00​:00 0
b7c53000-b7c68000 r-xp 00000000 08​:02 525558 /lib/tls/i686/cmov/
libpthread-2.9.so
b7c68000-b7c69000 r--p 00014000 08​:02 525558 /lib/tls/i686/cmov/
libpthread-2.9.so
b7c69000-b7c6a000 rw-p 00015000 08​:02 525558 /lib/tls/i686/cmov/
libpthread-2.9.so
b7c6a000-b7c6c000 rw-p b7c6a000 00​:00 0
b7c6c000-b7c90000 r-xp 00000000 08​:02 525540 /lib/tls/i686/cmov/
libm-2.9.so
b7c90000-b7c91000 r--p 00023000 08​:02 525540 /lib/tls/i686/cmov/
libm-2.9.so
b7c91000-b7c92000 rw-p 00024000 08​:02 525540 /lib/tls/i686/cmov/
libm-2.9.so
b7c92000-b7c93000 rw-p b7c92000 00​:00 0
b7c93000-b7c95000 r-xp 00000000 08​:02 525538 /lib/tls/i686/cmov/
libdl-2.9.so
b7c95000-b7c96000 r--p 00001000 08​:02 525538 /lib/tls/i686/cmov/
libdl-2.9.so
b7c96000-b7c97000 rw-p 00002000 08​:02 525538 /lib/tls/i686/cmov/
libdl-2.9.so
b7c98000-b7c9c000 r--s 00000000 08​:02 1502045
/rakudo/parrot/runtime/parrot/library/Getopt/Obj.pbc
b7c9c000-b7c9e000 r--s 00000000 08​:02 1502043
/rakudo/parrot/runtime/parrot/library/dumper.pbc
b7c9e000-b7c9f000 r--s 00000000 08​:02 1502059
/rakudo/parrot/runtime/parrot/library/Parrot/Exception.pbc
b7ca7000-b7fe6000 r-xp 00000000 08​:02 4278967
/rakudo/parrot/blib/lib/libparrot.so.1.3.0
b7fe6000-b7fec000 r--p 0033f000 08​:02 4278967
/rakudo/parrot/blib/lib/libparrot.so.1.3.0
b7fec000-b8002000 rw-p 00345000 08​:02 4278967
/rakudo/parrot/blib/lib/libparrot.so.1.3.0
b8002000-b8004000 rw-p b8002000 00​:00 0
b8004000-b8005000 r-xp b8004000 00​:00 0 [vdso]
b8005000-b8021000 r-xp 00000000 08​:02 507927 /lib/ld-2.9.so
b8021000-b8022000 r--p 0001b000 08​:02 507927 /lib/ld-2.9.so
b8022000-b8023000 rw-p 0001c000 08​:02 507927 /lib/ld-2.9.so
bfb0e000-bfb23000 rw-p bffeb000 00​:00 0 [stack]
Multiple Dispatch​: No suitable candidate found for 'cmp', with signature
'PP->I'
in Main (<unknown>​:1)
Multiple Dispatch​: No suitable candidate found for 'cmp', with signature
'PP->I'
current instr.​: 'infix​:cmp' pc 16350 (src/builtins/cmp.pir​:146)
called from Sub '_block27' pc 181 (EVAL_21​:88) (src/gen_setting.pm​:3225)
called from Sub 'perl6;Any;!COMPARE_DO' pc 13085
(src/builtins/any-list.pir​:313)
called from Sub 'perl6;Perl6;Compiler;main' pc 274171
(src/gen_actions.pir​:24076) (src/gen_setting.pm​:3225)

@p6rt
Copy link
Author

p6rt commented Jul 12, 2010

From @bbkr

[16​:15] <bbkr> rakudo​: my @​list = 1,2,Code; say @​list.sort​: { $^a cmp $^b }
[16​:15] <p6eval> rakudo bb6df2​: OUTPUT«12Code()␤»

@p6rt
Copy link
Author

p6rt commented Jul 12, 2010

The RT System itself - Status changed from 'new' to 'open'

@p6rt
Copy link
Author

p6rt commented Jul 12, 2010

From @bbkr

tests added in /home/ppabian/pugs/t/spec/S32-list/sort.t

@p6rt
Copy link
Author

p6rt commented Jul 12, 2010

@bbkr - Status changed from 'open' to 'resolved'

@p6rt p6rt closed this as completed Jul 12, 2010
@p6rt
Copy link
Author

p6rt commented Jul 12, 2010

From @kyleha

This is an automatically generated mail to inform you that tests are now available in t/spec/S32-list/sort.t

commit f9c6673e5b8c50bdc53a1defa548857d03a79a8c
Author​: bbkr <bbkr@​c213334d-75ef-0310-aa23-eaa082d1ae64>
Date​: Mon Jul 12 14​:25​:46 2010 +0000

  [t/spec] tests for RT #​67010 Error with glibc backtrace dump when cmp used wrong
 
  git-svn-id​: http://svn.pugscode.org/pugs@&#8203;31640 c213334d-75ef-0310-aa23-eaa082d1ae64

Inline Patch
diff --git a/t/spec/S32-list/sort.t b/t/spec/S32-list/sort.t
index bebe619..2f82da3 100644
--- a/t/spec/S32-list/sort.t
+++ b/t/spec/S32-list/sort.t
@@ -1,6 +1,6 @@
 use v6;
 use Test;
-plan 28;
+plan 29;
 
 # L<S32::Containers/"List"/"=item sort">
 
@@ -203,4 +203,11 @@ plan 28;
     is ~(42,).sort: { 0 }, "42",  "method form of sort should work on arrays";
 }
 
+# RT #67010
+{
+    my @list = 1, 2, Code;
+    lives_ok { @list.sort: { $^a cmp $^b } },
+        'sort by class name';
+}
+
 # vim: ft=perl6

@p6rt p6rt added the Bug label Jan 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant