[perl #41035] [BUG] Parrot segfaults in perl6 08-regex.t (GC/pointer bug?)

2006-12-01 Thread via RT
# New Ticket Created by  Patrick R. Michaud 
# Please include the string:  [perl #41035]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=41035 >


---
osname= linux
osvers= 2.6.16
arch=   x86_64-linux-thread-multi
cc= cc 
---
Flags:
category=core
severity=high
ack=no
---
Here's another segfault arising in the parrot core as a result
of running perl6.pbc on a test file.  This may or may not be
related to RT #40966; I'm entering it as a separate ticket
just in case the two are different.

As before, the test works when the -G flag is present, but
segfaults when it isn't.  The problem appears in r15837:

1. build parrot
2. cd languages/perl6
3. make

The core dump appears when running t/00-parrot/08-regex.t:

$ ../../parrot perl6.pbc t/00-parrot/08-regex.t
Segmentation fault (core dumped)

It works fine if -G is present:

$ ../../parrot -G perl6.pbc t/00-parrot/08-regex.t
1..11
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11

The backtrace (complete copy below) shows a worrisome 
"0xdeadbeef":

(gdb) backtrace
#0  0xdeadbeef in ?? ()
#1  0x2ad8a1631762 in parrot_hash_put (interp=0x50c010,
hash=0x2adcfcb0, key=0x2ad48f28, value=0x2adcfc10)
at src/hash.c:850
#2  0x2ad8a1631af9 in parrot_hash_clone (interp=0x50c010, hash=0x754050,
dest=0x2adcfcd8) at src/hash.c:967
#3  0x2ad8a16d56f1 in Parrot_Hash_clone (interp=0x50c010,
pmc=0x2adcfd78) at src/pmc/hash.pmc:205
#4  0x2ad8a1561882 in Parrot_clone_p_p (cur_opcode=0x2acd0ab8,
interp=0x50c010) at src/ops/set.ops:524
#5  0x2ad8a162b031 in runops_slow_core (interp=0x50c010, 
pc=0x2acd0ab8)
at src/runops_cores.c:184
#6  0x2ad8a161314a in runops_int (interp=0x50c010, offset=137)
at src/interpreter.c:775
#7  0x2ad8a1618a0e in runops (interp=0x50c010, offs=137)
at src/inter_run.c:87
#8  0x2ad8a1618ca8 in runops_args (interp=0x50c010, sub=0x7e6c58,
obj=0x550350, meth=0x0, sig=0x2ad8a17481b2 "vP", ap=0x7fff097c0110)
at src/inter_run.c:193
#9  0x2ad8a1618e9b in Parrot_runops_fromc_args (interp=0x50c010,
sub=0x7e6c58, sig=0x2ad8a17481b2 "vP") at src/inter_run.c:295
#10 0x2ad8a16391d8 in Parrot_runcode (interp=0x50c010, argc=2,
argv=0x7fff097c0430) at src/embed.c:806
#11 0x004035a6 in main (argc=2, argv=0x7fff097c0430)
at compilers/imcc/main.c:723

Thanks!

Pm


complete transcript including backtrace
$ ../../parrot perl6.pbc t/00-parrot/08-regex.t
Segmentation fault (core dumped)
$ ../../parrot -G perl6.pbc t/00-parrot/08-regex.t
1..11
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
$ gdb ../../parrot core.15950
GNU gdb 6.4
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-suse-linux"...Using host libthread_db 
library "/lib64/libthread_db.so.1".

Core was generated by `../../parrot perl6.pbc t/00-parrot/08-regex.t'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from 
/home/pmichaud/parrot/trunk/blib/lib/libparrot.so.0.4.7...done.
Loaded symbols for /home/pmichaud/parrot/trunk/blib/lib/libparrot.so.0.4.7
Reading symbols from /lib64/libdl.so.2...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libcrypt.so.1...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /lib64/libpthread.so.0...done.
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/librt.so.1...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /lib64/libreadline.so.5...done.
Loaded symbols for /lib64/libreadline.so.5
Reading symbols from /lib64/libncurses.so.5...done.
Loaded symbols for /lib64/libncurses.so.5
Reading symbols from /usr/lib64/libstdc++.so.6...done.
Loaded symbols for /usr/lib64/libstdc++.so.6
Reading symbols from /lib64/libm.so.6...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libgcc_s.so.1...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libc.so.6...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from 
/home/pmichaud/parrot/trunk/runtime/parrot/dynext/perl6_group.so...done.
Loaded symbols for 
/home/pmichaud/parrot/trunk/runtime/parrot/dynext/perl6_group.so
#0  0xdeadbeef in ?? ()
(gdb) backtrace
#0  0xdeadbeef in ?? ()
#1  0x2ad8a1631762 in parrot_hash_put (interp=0x50c010,
hash=0x2adcfcb0, key=0

[perl #41032] [PATCH] Compiling Parrot with the new Borland C++

2006-12-01 Thread via RT
# New Ticket Created by  Steve Peters 
# Please include the string:  [perl #41032]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=41032 >


It took some tweaking to get some of the warnings shut off, but the
attached patch actually gets the files to compile, although it doesn't
actually build a parrot to test with.  Expect a few more patches over the
next week to finish this off.

Steve Peters
[EMAIL PROTECTED]
--- parrot-old/src/pic.c2006-11-18 18:16:41.921875000 -0600
+++ parrot/src/pic.c2006-11-18 16:06:35.31250 -0600
@@ -83,7 +83,7 @@
 #  include "parrot/oplib/core_ops_cgp.h"
 #endif
 
-#if HAS_JIT
+#ifdef HAS_JIT
 #include "parrot/exec.h"
 #include "jit.h"
 #endif
@@ -484,7 +484,6 @@
 is_pic_func(Interp *interp, void **pc, Parrot_MIC *mic, int core_type)
 {
 PMC *sub, *sig_args, *sig_results;
-char *base;
 parrot_context_t *ctx;
 opcode_t *op, n;
 int flags;
@@ -507,7 +506,6 @@
  * pc is at set_args
  */
 
-base = (char*)interp->ctx.bp.regs_i;
 ctx = CONTEXT(interp->ctx);
 sig_args = (PMC*)(pc[1]);
 ASSERT_SIG_PMC(sig_args);
@@ -543,7 +541,6 @@
 parrot_PIC_prederef(Interp *interp, opcode_t op, void **pc_pred, int core)
 {
 op_func_t * const prederef_op_func = interp->op_lib->op_func_table;
-char * const _reg_base = (char*)interp->ctx.bp.regs_i;
 opcode_t * const cur_opcode = (opcode_t*)pc_pred;
 Parrot_MIC *mic = NULL;
 
--- parrot-old/src/pic_jit.c2006-11-18 18:16:41.140625000 -0600
+++ parrot/src/pic_jit.c2006-11-18 16:08:04.765625000 -0600
@@ -38,7 +38,7 @@
 #  include "parrot/oplib/core_ops_cgp.h"
 #endif
 
-#if HAS_JIT
+#ifdef HAS_JIT
 #include "parrot/exec.h"
 #include "jit.h"
 
@@ -261,7 +261,6 @@
 {
 
 opcode_t *base, *start, *end;
-STRING * const name = VTABLE_get_string(interp, sub);
 
 *flags = 0;
 
--- parrot-old/src/mmd.c2006-11-18 18:16:43.859375000 -0600
+++ parrot/src/mmd.c2006-11-18 18:30:03.640625000 -0600
@@ -135,7 +135,7 @@
 func = D2FPTR(PMC_struct_val(method));
 *is_pmc = 0;
 mmd_register(interp, func_nr, left_type, r,
-PMC_struct_val(method));
+(void (*)())PMC_struct_val(method));
 }
 else {
 *is_pmc = 1;


[perl #41031] bad links in docs/ROADMAP.pod

2006-12-01 Thread via RT
# New Ticket Created by  Will Coleda 
# Please include the string:  [perl #41031]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=41031 >


   -- Dead: http://feather.perl6.nl/~chip/Chip_APW.sxi
   -- Dead: http://feather.perl6.nl/~chip/Chip_APW.pdf


--
Will "Coke" Coleda
[EMAIL PROTECTED]




Re: KeySet, KeyBag and KeyHash typing

2006-12-01 Thread Darren Duncan

At 6:53 PM +0100 12/1/06, TSa wrote:

HaloO Larry,
you wrote:

I think a consequence of this view is that (x) ops are all key-based set
ops unless you explicitly make sure both sides are bags.  But it's still
early enough in the morning that I've not thought this through entirely...


I understand that you want first of all 'KeyHash does Hash' and then
we have three special key handling subtypes of Hash. They differ only
in the value type. With Bit <: UInt <: Any and covariant container
typing this yields KeySet <: KeyBag <: KeyHash <: Hash. And I still
opt for Seq/List/Array entering the picture as subtypes of KeyBag
because we loose no information then.

The question is now how the mixed value case Bit and UInt from
the respective KeySet and KeyBag types are handled. I think we
should promote the Bit to an Uint and go for Bag operations. Note
that Bag operations yield set semantics when fed with set data.

The subtyping of KeyBag to KeyHash is a bit bogus because we loose
Bag semantics in so far as the Any supertype of UInt is not a
generalized multiplicity. That is KeyHash is more like KeySet but
with arbitrary items indicating presence. Actuallly the Any type
might support the needed min/max and +/- calls but I guess this is
not what a user of a KeyHash would expect when she uses it as argument
to the (x) ops.

In the end it might be more practical to make Bag an interface
subtype of Set that adds multiplicity of items that is dropped
when mixed Set Bag (x) ops are used. This is where I started before
Darren mentioned the Set <: Bag fact.

Is that enough food for thought for later in the day?


Tsa,

I consider the current KeyHash|KeySet|KeyBag|Set|Bag etc in Synopsis 
6 to be a good solution for users of sets and bags.


I do not understand the rationale to make any further changes as you 
have described above.


Please clarify benefits of what you are debating to change, maybe 
with use case examples.


-- Darren Duncan


Re: [perl #41014] [PATCH] Autobox Native Types for MultiSubs

2006-12-01 Thread Leopold Toetsch
Am Donnerstag, 30. November 2006 01:20 schrieb Matt Diephouse:
> Matt Diephouse <[EMAIL PROTECTED]> wrote:
> > We've basically run into the fact that there's no spec for MMD. I'll
> > see if I can provide a patch that just makes "_" match native types,
> > but I think it'll be somewhat more involved than this one.
>
> It ended up being easier than expected -- implemented in r15910.

Looks good and works as expected.

BTW: the subject is a bit misleading, MMD and auto{un,}boxing are really 
orthogonal, the former selects a sub depending on call argument types (and 
available multis), the latter deals with argument passing to the one select 
sub.

Great job, thanks
leo 


Re: [perl #40998] [PATCH] Fix build error on Win32

2006-12-01 Thread Nikolay Ananiev
OK, so no one seems interested.
Anyway, the attached patch in this message is a
better version of the previous one.
It checks for a white space in build_dir and makes the value
short path only when a space exists.

"Nikolay Ananiev" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
>
> "Ron Blaschke" <[EMAIL PROTECTED]> wrote in message
> news:[EMAIL PROTECTED]
> > Nikolay Ananiev (via RT) wrote:
> > > # New Ticket Created by  "Nikolay Ananiev"
> > > # Please include the string:  [perl #40998]
> > > # in the subject line of all future correspondence about this issue.
> > > # http://rt.perl.org/rt3/Ticket/Display.html?id=40998 >
> >
> > > When build_dir contains spaces the build process fails.
> > > The fix is to translate build_dir to a short path name.
> >
> > In my opinion it would be better to escape/quote the relevant paths
> > properly.  I think the short file names were introduced for backwards
> > compatibility, as a kludge.  Besides, they are ugly to read. ;-)
> >
> > Ron
> >
>
> If we use quotes, we'll have to refactor some of the scripts in the build
> tree,
> because there are many concatenations and currently they won't work
> if we use quotes on build_dir. There's one more way. We can check
build_dir
> and use short path names only if there are spaces.
>
>
>
>


begin 666 win32build.patch
[EMAIL PROTECTED](&-O;F9I9R]I;FET+VAI;G1S+VUS=VEN,S(N<&T-"CT]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]/3T-"BTM+2!C;VYF:6PI 0" M,C2 D8G5I;&1?9&ER(#T@)&-O;F8M/F1A=&$M/F=E="@G8G5I
M;&1?9&ER)RD["BL@(" @"BL@(" @:68H)&)U:6QD7V1I

Re: [perl #40815] Summary of 'make test' failures on Darwin

2006-12-01 Thread chromatic
On Thursday 30 November 2006 20:25, Andy Bach wrote:

> James Keenan via RT wrote:

> > On Sat Nov 11 10:17:33 2006, [EMAIL PROTECTED] wrote:
> >> perl Configure.pl --without-gmp --cc=gcc --ccflags='-fno-common -pipe
> >> -I/usr/local/include -pipe -fno-common'
> >>
> >> Then chromatic suggested manually editing the Makefile to delete '-
> >> bundle' from the following line.
> >> LD_LOAD_FLAGS   = -bundle -undefined suppress
>
> It appears (from google) that "-bundle" is a MacOS specific option to
> their version of gcc's c++ (also Intel's MacOS c++) but, I'm guessing,
> your version of c++, which is then treating the -bundle as -b undle or
> somesuch.  So, perhaps the MacOS guessing code needs to poke a tad
> harder at the versions of gcc/c++ its getting its hands on.

What's weirder to me is that Configure.pl picks up g++ as the linker while 
using cc as the compiler.  I couldn't figure that out at the hackathon; 
something's definitely weird there.

I think we opened a ticket asking for an override to specify "Link with gcc 
instead of g++", but I don't know the status of that.

-- c


Re: KeySet, KeyBag and KeyHash typing

2006-12-01 Thread TSa

HaloO Larry,

you wrote:

I think a consequence of this view is that (x) ops are all key-based set
ops unless you explicitly make sure both sides are bags.  But it's still
early enough in the morning that I've not thought this through entirely...


I understand that you want first of all 'KeyHash does Hash' and then
we have three special key handling subtypes of Hash. They differ only
in the value type. With Bit <: UInt <: Any and covariant container
typing this yields KeySet <: KeyBag <: KeyHash <: Hash. And I still
opt for Seq/List/Array entering the picture as subtypes of KeyBag
because we loose no information then.

The question is now how the mixed value case Bit and UInt from
the respective KeySet and KeyBag types are handled. I think we
should promote the Bit to an Uint and go for Bag operations. Note
that Bag operations yield set semantics when fed with set data.

The subtyping of KeyBag to KeyHash is a bit bogus because we loose
Bag semantics in so far as the Any supertype of UInt is not a
generalized multiplicity. That is KeyHash is more like KeySet but
with arbitrary items indicating presence. Actuallly the Any type
might support the needed min/max and +/- calls but I guess this is
not what a user of a KeyHash would expect when she uses it as argument
to the (x) ops.

In the end it might be more practical to make Bag an interface
subtype of Set that adds multiplicity of items that is dropped
when mixed Set Bag (x) ops are used. This is where I started before
Darren mentioned the Set <: Bag fact.

Is that enough food for thought for later in the day?


Regards, TSa.
--


Re: [perl #40815] Summary of 'make test' failures on Darwin

2006-12-01 Thread Andy Bach

James Keenan via RT wrote:

On Sat Nov 11 10:17:33 2006, [EMAIL PROTECTED] wrote:
  
perl Configure.pl --without-gmp --cc=gcc --ccflags='-fno-common -pipe  
-I/usr/local/include -pipe -fno-common'


Then chromatic suggested manually editing the Makefile to delete '- 
bundle' from the following line.

LD_LOAD_FLAGS   = -bundle -undefined suppress
It appears (from google) that "-bundle" is a MacOS specific option to 
their version of gcc's c++ (also Intel's MacOS c++) but, I'm guessing, 
your version of c++, which is then treating the -bundle as -b undle or 
somesuch.  So, perhaps the MacOS guessing code needs to poke a tad 
harder at the versions of gcc/c++ its getting its hands on.


a

--
Andy Bach, Sys. Mangler
Internet: [EMAIL PROTECTED] 
VOICE: (608) 261-5738  FAX 264-5932


"Capital is only the fruit of labor. Labor is the superior of capital and
deserves much the higher consideration."
Abraham Lincoln, first annual address to Congress 1861