Re: [perl #32112] [PATCH] Fixes for Befunge interpreter

2004-10-24 Thread Leopold Toetsch
Jerome Quelin <[EMAIL PROTECTED]> wrote:
> On 04/10/23 08:25 -0700, Stepan Roh wrote:
>> While playing with Parrot I found a few bugs and problems in Befunge
>> interpreter. Although it is not important part of Parrot

> What? Not important?

[ ... ]

> ==> applied.

[ ... ]

Thanks Jerome, for all the fun I had reading your comments, and well,
yes - just applying the patches, and of course to Stepan for awakening
Jerome ;)

leo


Re: [PATCH] Re: JIT and platforms warning

2004-10-24 Thread Leopold Toetsch
Jeff Clites <[EMAIL PROTECTED]> wrote:
> On Oct 23, 2004, at 4:20 AM, Leopold Toetsch wrote:

>> Jeff Clites <[EMAIL PROTECTED]> wrote:
>>
>>> See attached the patch, plus the new asm.s file.
>>
>> Doesn't run, segfaults on even mops.pasm - please check.

> I can't reproduce that here; parrot -j works for me

Sorry, false alarm. I must have had indirect register access tured on.

Runs fine and gets applied.

leo


Re: A small Perl task

2004-10-24 Thread Leopold Toetsch
Jeff Clites <[EMAIL PROTECTED]> wrote:
> On Oct 23, 2004, at 5:14 AM, Leopold Toetsch wrote:

>> First, if you don't have it yet done, install ccache.

> Thanks for the tip--seems awesome.

Welcome.

> In the dump case, you basically (it seems) need to parse the pmc file
> in order to determine the parent (chain), in order to determine the
> dependencies, in order to figure out what you need to put into your
> digest. (In the ccache case, it's the preprocessor doing this for you.)
> But by then, you've done most of the work I'd think (by parsing the pmc
> file).

Probably yes. But you could check all the time stamps of the parents. If
all parent pmcs are older then the cached .c and .dump files, you could
just serve from the pmc-cache. This is probably doable by Makefile-only
rules too, but then a "make clean" still does the full recreation. And
"make clean" is commonly needed due to insufficient dependencies, which
is another issue.

> JEff

leo


Re: [PATCH] Re: JIT and platforms warning

2004-10-24 Thread Leopold Toetsch
Jeff Clites <[EMAIL PROTECTED]> wrote:
> On Oct 23, 2004, at 3:42 AM, Leopold Toetsch wrote:

> We were allocating the volatile float registers first (or, only)--so
> C was blowing away an N-register, even with only one in use.
> That's why I was surprised there weren't more failures.

Yes. As said i386 had the same problem and not one test file did break.

I've now added a quick hack to the JIT compiler, which seems to do the
right thing, or better, it's a step towards that:

$extern = 1 if $asm =~ /call_func/;

This marks the function being extern to JIT, so the register preserving
code is activated. It's not quite the best solution, because only
used volatiles have to be preserved/restored. More below ...

>> Anyway, I think we need a more general solution.
>...
>> Solution: The JIT compiler/optimizer already calculates the register
>> mapping. We have to use this information for JIT pro- and epilogs.

> That makes sense--I hadn't initially realized we were tracking this,
> but since we are, we should use it. Things may be a bit tricky
> fixup-wise, since the size of the prolog will depend on how many float
> registers we need to preserve.

Not really. When creating the prolog/epilog you know exactly the
register mapping of each section. So we just have to find the maximum
for each register kind, then decide, if we should use non-volatiles or
volatiles or both and emit the appropriate code.

We probably need some platform settings and tweakables, which allocation
policy should be used, e.g.

  PARROT_JIT_PREFER_VOLATILES

and maybe a threshold, when to change allocation policy. But anyway, in
jit_info->optimizer, you'll get the count of used registers. With that
information the platform code can calculate the used stack storage and
emit the appropriate pro- and epilogs. E.g. from
Mach-O- Runtime Conventions for PowerPC - PowerPC Stack Structure

  spaceToSave = linkageArea + params + localVars + 4 * nGPRS + 8 * nFPRS

rounded up to x*16. It's the same, what currently is a hardcode define.

>> 2) JITed functions with calls into Parrot
>>
>> The jit2h JIT compiler needs a hint, that we call external code, e.g.
>>
>>CALL_FUNCTION("string_copy")

So, back to external functions. With this syntax (and a needed jit_info
argument), we can do:

$extern = -1 if $asm =~ /CALL_FUNCTION/;

This activates the saving and restoring of used volatiles. I don't think
that we have to write back non-volatiles to Parrot registers, at least
not, if we define that JITted code like that will not see a correct
Parrot register set. If a function would need the Parrot registers, just
don't provide a JITted version for it.

OTOH this could be problematic if the function throws an exception, and
if the exception handler is able to provide a Parrot core dump.

> One other question: Your "P_ARITH" optimization in jit/ppc/core.jit. I
> can't come up with a case where this kicks in,

It's alomost only for examples/benchmarks/mops.pasm: + 50% speed. Now
PPC JIT code is two instructions for the loop instead of three ;)

> Thanks,

> JEff

leo


[perl #32118] [PATCH] Update of documentation

2004-10-24 Thread via RT
# New Ticket Created by  Stepan Roh 
# Please include the string:  [perl #32118]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org:80/rt3/Ticket/Display.html?id=32118 >


Attached is a patch generated with cvs diff -u against CVS HEAD 
2004/10/24.

Changes to docs/gettingstarted.pod:

- removed non-functional http://cvs.perl.org/viewcvs/parrot/ (viewcvs is 
there, but parrot repository is not configured)
- updated HTML generation command
- removed Tinderbox (gives 404 Not Found)
- removed Test Coverage Results (last update was Tue Jan 20 03:05:56 2004 
and there are no useful summaries)
- removed Bonsai (gives 404 Not Found)

Changes to docs/glossary.pod:

- converted reference from viewcvs to cvsweb

Maybe there are some good links to Tinderbox or Bonsai or ViewCVS or they
are only temporarily down, I don't know, but having non-functional 
references in documentation is not very good.

Note that some of these apply to http://www.parrotcode.org/resources.html 
too.

Have a nice day.

Stepan RohIndex: docs/gettingstarted.pod

===

RCS file: /cvs/public/parrot/docs/gettingstarted.pod,v

retrieving revision 1.5

diff -u -r1.5 gettingstarted.pod

--- docs/gettingstarted.pod 28 Feb 2004 09:18:02 -  1.5

+++ docs/gettingstarted.pod 23 Oct 2004 23:24:10 -

@@ -20,12 +20,10 @@

 =item *

 

 If you're just interested in browsing the CVS repository without downloading 

-anything, a few interfaces exist.

+anything, an interface exists.

 

 http://cvs.perl.org/cvsweb/parrot/

 

-http://cvs.perl.org/viewcvs/parrot/

-

 =item *

 

 The easiest solution is to grab the most recent snapshot of the Parrot CVS 

@@ -94,7 +92,7 @@

 available by running the following command in the Parrot distribution's

 root directory:

 

-% perl tools/docs/write_docs.pl -s

+% make html

 

 To view the HTML documentation start with the page F.

 

@@ -293,53 +291,6 @@

 a comprehensive guide to getting started with Parrot development (called,

 unsurprisingly, 'Getting Started with Parrot Development').

 

-=item * Tinderbox

-

-The tinderbox consists of a number of different computers running various OS 

-and platform configurations, downloading the latest Parrot distribution every 

-few hours and running the test suite to verify that it works on that given 

-combination of software and hardware.

-

-To view the results of the tinderbox system, check out:

-

-http://tinderbox.perl.org/tinderbox/bdshowbuild.cgi?tree=parrot

-

-=item * Tinderbox Failure Summary

-

-A brief summary of the current status of the various tinderbox machines.

-Useful for finding out which tests are failing (if any).

-

-=item * Test Coverage Results

-

-The Parrot test suite is intended to test all aspects of Parrot's code. You 

-can see how successful we are at this goal by checkout the test coverage. It 

-gives line, branch, and call coverage percentages on a per-file or 

-per-function breakdown. Find it here:

-

-http://www.hitchhiker.org/parrot_coverage/

-

-=item * Bonsai

-

-Bonsai is a cvs tree control tool to monitor the status of cvs trees. 

-Whenever a checkin occurs, bonsai adds that person to the "hook," a list of 

-those responsible for the current state of the tree (this should be cleared 

-whenever we know that things are working for sure). Users can then run 

-queries to find out who has changed what files and access their checkin 

-comments in addition to generating diffs.

-

-=over 4

-

-=item * Query

-

-http://tinderbox.perl.org/bonsai/cvsqueryform.cgi?cvsroot=/home/tinder/perlcvs&module=parrot

-

-=item * Browse

-

-http://tinderbox.perl.org/bonsai/rview.cgi?cvsroot=/home/tinder/perlcvs&dir=parrot&module=parrot

-

-

-=back

-

 =back

 

 =head1 VERSION

Index: docs/glossary.pod

===

RCS file: /cvs/public/parrot/docs/glossary.pod,v

retrieving revision 1.12

diff -u -r1.12 glossary.pod

--- docs/glossary.pod   28 Feb 2004 00:30:39 -  1.12

+++ docs/glossary.pod   23 Oct 2004 23:24:12 -

@@ -180,7 +180,7 @@

 in one of the early implementations. You can see the initial commit of

 the PackFile.pm implementation, with the rationale for the name here:

 

-http://cvs.perl.org/cgi/viewcvs.cgi/parrot/lib/Parrot/PackFile.pm?sortby=log

+http://cvs.perl.org/cvsweb/parrot/lib/Parrot/PackFile.pm?sortby=log

 

 =head2 PBC

 



Re: [perl #32118] AutoReply: [PATCH] Update of documentation

2004-10-24 Thread Stepan Roh
Updated patch attached. Changes from previous patch:
- do not remove viewcvs from gettingstarted.pod, because it's working 
again (see #32101)
- do not change viewcvs in glossary.doc to cvsweb, just correct the link

Have a nice day.
Stepan RohIndex: docs/gettingstarted.pod
===
RCS file: /cvs/public/parrot/docs/gettingstarted.pod,v
retrieving revision 1.5
diff -u -r1.5 gettingstarted.pod
--- docs/gettingstarted.pod 28 Feb 2004 09:18:02 -  1.5
+++ docs/gettingstarted.pod 24 Oct 2004 09:18:23 -
@@ -94,7 +94,7 @@
 available by running the following command in the Parrot distribution's
 root directory:
 
-% perl tools/docs/write_docs.pl -s
+% make html
 
 To view the HTML documentation start with the page F.
 
@@ -293,53 +293,6 @@
 a comprehensive guide to getting started with Parrot development (called,
 unsurprisingly, 'Getting Started with Parrot Development').
 
-=item * Tinderbox
-
-The tinderbox consists of a number of different computers running various OS 
-and platform configurations, downloading the latest Parrot distribution every 
-few hours and running the test suite to verify that it works on that given 
-combination of software and hardware.
-
-To view the results of the tinderbox system, check out:
-
-http://tinderbox.perl.org/tinderbox/bdshowbuild.cgi?tree=parrot
-
-=item * Tinderbox Failure Summary
-
-A brief summary of the current status of the various tinderbox machines.
-Useful for finding out which tests are failing (if any).
-
-=item * Test Coverage Results
-
-The Parrot test suite is intended to test all aspects of Parrot's code. You 
-can see how successful we are at this goal by checkout the test coverage. It 
-gives line, branch, and call coverage percentages on a per-file or 
-per-function breakdown. Find it here:
-
-http://www.hitchhiker.org/parrot_coverage/
-
-=item * Bonsai
-
-Bonsai is a cvs tree control tool to monitor the status of cvs trees. 
-Whenever a checkin occurs, bonsai adds that person to the "hook," a list of 
-those responsible for the current state of the tree (this should be cleared 
-whenever we know that things are working for sure). Users can then run 
-queries to find out who has changed what files and access their checkin 
-comments in addition to generating diffs.
-
-=over 4
-
-=item * Query
-
-http://tinderbox.perl.org/bonsai/cvsqueryform.cgi?cvsroot=/home/tinder/perlcvs&module=parrot
-
-=item * Browse
-
-http://tinderbox.perl.org/bonsai/rview.cgi?cvsroot=/home/tinder/perlcvs&dir=parrot&module=parrot
-
-
-=back
-
 =back
 
 =head1 VERSION
Index: docs/glossary.pod
===
RCS file: /cvs/public/parrot/docs/glossary.pod,v
retrieving revision 1.12
diff -u -r1.12 glossary.pod
--- docs/glossary.pod   28 Feb 2004 00:30:39 -  1.12
+++ docs/glossary.pod   24 Oct 2004 09:18:24 -
@@ -180,7 +180,7 @@
 in one of the early implementations. You can see the initial commit of
 the PackFile.pm implementation, with the rationale for the name here:
 
-http://cvs.perl.org/cgi/viewcvs.cgi/parrot/lib/Parrot/PackFile.pm?sortby=log
+http://cvs.perl.org/viewcvs/cvs-public/parrot/lib/Parrot/PackFile.pm?sortby=log
 
 =head2 PBC
 


[perl #32117] [PATCH] new multifacetted pmc: siva

2004-10-24 Thread via RT
# New Ticket Created by  Stephane Payrard 
# Please include the string:  [perl #32117]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org:80/rt3/Ticket/Display.html?id=32117 >


Siva is a type that acts as a hash, array , string scalar, int
scalar. It is intended as the type for nodes of attributed trees
These attributed trees may probably be of various kinds such as
parse trees and XML trees. The intensive use of context should
minimize explicit structure walking.

Hashes and arrays are allocated only when needed.

I have a problem with siva.t. The pasm code is the same as
siva.pasm though.

The name is a reference to the hindouist god siva often represented
with many arms. 


Files modified:
  config/gen/makefiles/dynclasses.in

Files created:
  dynclasses/siva.pmc
  dynclasses/siva.pasm
  dynclasses/siva.t 


--- config/gen/makefiles/dynclasses.in.old  2004-10-12 11:00:16.0 +0200
+++ config/gen/makefiles/dynclasses.in  2004-10-23 23:11:45.468654168 +0200
@@ -9,7 +9,8 @@
 PMCS = foo subproxy \
 tclobject tclstring tclint tclfloat \
 tcllist tclarray \
-match matchrange
+match matchrange \
+siva
 
 BUILD = ${perl} build.pl
 
--- /dev/null   1970-01-01 01:00:00.0 +0100
+++ dynclasses/siva.pmc 2004-10-23 23:51:36.839110600 +0200
@@ -0,0 +1,496 @@
+#include "parrot/parrot.h"
+
+/*
+
+Siva is a type that acts as a hash, array , string scalar, int
+scalar. It is intended as the type for nodes of attributed trees
+These attributed trees may probably be of various kinds such as
+parse trees and XML trees. The intensive use of context should
+minimize explicit structure walking.
+
+Hashes and arrays are allocated only when needed.
+
+*/
+
+typedef struct siva {
+  INTVAL  uid;   /* will be accessible as an element of index ??? */
+  Hash*hash;
+  STRING* s;
+} siva;
+
+static PMC* intret;
+STRING * hash_get_idx(Interp *interpreter, Hash *hash, PMC * key);
+static PMC* undef_pmc; 
+
+/*
+  The next four functions are copied verbatim from perlhash.pmc and array.pmc.
+  When it will be clear that I can use them without changing them
+  I need to suppress the local copy and make them global in array.pmc
+*/
+
+/*
+
+=item C
+
+Returns a Parrot string for C<*key>.
+
+=cut
+
+*/
+
+static STRING* make_hash_key(Interp* interpreter, PMC * key)
+{
+if (key == NULL) {
+internal_exception(OUT_OF_BOUNDS,
+"Cannot use NULL key for PerlHash!\n");
+return NULL;
+}
+return key_string(interpreter, key);
+}
+
+/*
+ same routine in array.pmc should be global 
+
+=item C
+
+Returns a C PMC.
+
+=cut
+
+*/
+
+static PMC* undef(Interp* interpreter)
+{
+return pmc_new(interpreter, enum_class_PerlUndef);
+}
+
+/*
+ same routine in array.pmc should be global 
+
+=item C
+
+Processes C<*ret>, returning the appropriate PMC, or raising an
+exception if necessary.
+
+=cut
+
+*/
+
+static PMC* retval(Interp *interp, void *ret)
+{
+PMC *value;
+if (ret == 0)
+internal_exception(OUT_OF_BOUNDS, "Array index out of bounds!\n");
+/* XXX getting non existent value, exception or undef?
+ * current is for perlarray */
+if (ret == (void*) -1)
+value = undef(interp);
+else {
+value = *(PMC**) ret;
+if (value == NULL)  /* XXX same here */
+value = undef(interp);
+}
+return value;
+}
+
+
+static PMC*
+Parrot_Array_pop_pmc_ptr(Interp *interp, List *list)
+{
+return retval(interp, list_pop(interp, list, enum_type_PMC));
+}
+
+
+
+/*
+
+=item C
+
+Returns a pointer to the element at index C of C<*list>. If
+this element was previously empty, then this function also creates
+and assigns an "undef" PMC (currently a C, but this may
+change) to that element.
+
+=cut
+
+*/
+
+static PMC*
+Parrot_Array_get_pmc_ptr(Interp *interp, List *list, INTVAL key)
+{
+return retval(interp, list_get(interp, list, key, enum_type_PMC));
+}
+
+
+
+static PMC*
+Parrot_Array_set_pmc_ptr(Interp *interp, List *list, INTVAL key)
+{
+void * ret = list_get(interp, list, key, enum_type_PMC);
+PMC *value;
+
+/*   if (ret == 0)
+internal_exception(OUT_OF_BOUNDS, "Array index out of bounds!\n");
+*/
+/* assign into a sparse or not yet set value */
+if (ret == 0 || ret == (void*) -1 || *(PMC**)ret == 0) {
+value = undef(interp);
+list_assign(interp, list, key, value, enum_type_PMC);
+}
+else
+value = *(PMC**) ret;
+return value;
+}
+
+static size_t
+key_hash_int(Interp *interp, Hash *hash, void *value)
+{
+UNUSED(interp);
+UNUSED(hash);
+return (size_t) value;
+}
+
+
+static int
+int_compare(Parrot_Interp interp, void *a, void *b)
+{
+UNUSED(interp);
+return a != b;
+}
+
+
+
+/* rhs and lhs versions needed to avoid the msg "warning: use of cast expressions as 
lvalues is deprecated"
+   Is there a better way?
+ */
+#define siva_int(a) ((INTVAL) PMC_struct_val(a))
+#define siva_set_int(a,v)  (PMC_struct_val(a) = (DPOINTE

Re: embedding/extending issues

2004-10-24 Thread Leopold Toetsch
Jeff Horwitz <[EMAIL PROTECTED]> wrote:
> dan asked to keep everyone up to date on any issues i've had while
> developing mod_parrot.

Great thanks.

> ... following are the problems i've encountered.

> ---

> i currently get parrot's configuration from config_lib.pasm.  however, it
> is not readily apparent from the configuration the libraries and flags
> required to link with libparrot.a.  in particular:

If something is missing, we'll add it. Patches welcome. config_lib.pasm
is created by config/gen/config_pm.pl. All keys that have "TEMP_" in
front are skipped.

> many of the functions i need to perform in an embedding environment (PMC
> value manipulation, calling parrot subroutines, etc.) are only available
> if i include extend.h in addition to embed.h.

extend.h is for sure incomplete. But it should only wrap existing
functionality AFAIK. I really don't know how embedding/extending
should look like.

> there is no NCI signature for (char **),

All the non-trivial signatures should be accessible via the
{Un,}ManagedStruct PMCs, albeit I'm not sure, if "char *" is handled. But
pointer to structs are handled as well as the issue, who's the owner of
the struct aka memory freeing. So "char **" is a pointer to a structure
with one element "char *".

There are BTW ugly looking and under-documented special signatures like
"L" or "T", which should be dropped in favor of {Un,}ManagedStructs.

> that's it -- really no *major* problems to report, and that says a lot
> about the state of parrot right now.

Sounds good, thanks for your report.

> -jeff

leo


Re: [perl #32117] [PATCH] new multifacetted pmc: siva

2004-10-24 Thread Leopold Toetsch
Stephane Payrard <[EMAIL PROTECTED]> wrote:

> Siva is a type that acts as a hash, array , string scalar, int
> scalar. It is intended as the type for nodes of attributed trees
> These attributed trees may probably be of various kinds such as
> parse trees and XML trees. The intensive use of context should
> minimize explicit structure walking.

> Hashes and arrays are allocated only when needed.

> I have a problem with siva.t. The pasm code is the same as
> siva.pasm though.

What problem?

> +/* rhs and lhs versions needed to avoid the msg "warning: use of cast expressions 
> as lvalues is deprecated"

Have a look at LVALUE_CAST()

> +#define siva_hash(a)  ((siva*) PMC_pmc_val(a))->hash

> +#define siva_str(a)  ((siva*) PMC_pmc_val(a))->s

What happens, if I create a hash and extract a string?


leo


[CVS ci] JIT support for JITed functions that call external functions

2004-10-24 Thread Leopold Toetsch
Thanks to Jeff, who pointed at that, Parrot's JIT system now explicitely 
supports JITed functions that call into Parrot, like e.g. most string 
functions do.

Here are the steps to use this functionality:
1) Arrange mappable registers like this:
   char val_map[] = { non-volatiles, volatiles }:
2) define PRESERVED__REGS as the count of non-volatiles
3) denote a function call in core.jit as
   CALL_FUNCTION(jit_info, the_function);
NB: the only effect of this statement is that the extcall flag of that 
opcode is set to -1. It does not call the function or even try to setup 
function arguments. Function call is done by ...

4) define that macro on top of core.jit
jit/i386/core.jit is using this functionality now.
Have fun,
leo


[perl #32122] [TODO] exec core testing

2004-10-24 Thread via RT
# New Ticket Created by  Leopold Toetsch 
# Please include the string:  [perl #32122]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org:80/rt3/Ticket/Display.html?id=32122 >


We have since quite a time the support for creating native executables 
on some platforms. This functionality is not tested at all. The Makefile 
has just one very simple rule to create a "Hello world"-like program 
with "make testexec".

Testing the EXEC core should probably use EXEC_SHARED, but I don't know 
if that works. Hopelfully Daniel is listening and can provide some hints.

Takers welcome,
leo



Re: [perl #32117] [PATCH] new multifacetted pmc: siva

2004-10-24 Thread Stéphane Payrard
I am currently stuck because I get the error
  parrot: src/string.c:269: string_init: Assertion `p' failed.
on the second string_init of a parrot run using the last vanilla cvs

It may be a problem with mandrake cooker.
Jérôme Quelin uses a older mandrake cooker and it works there.
Comparing our config, it seems that the main difference is

he got:

  set P0["buildicu"], "1" 

and I have:

  set P0["buildicu"], "0" 

in config_lib.pasm

I have yet to check further.

So I may imprecise in my answers because I can't currently run
tests.

Also, I should have put a disclaimer, many pmc methods are still
missing. This is an early submission to get feedback.


On Sun, Oct 24, 2004 at 12:58:48PM +0200, Leopold Toetsch wrote:
> Stephane Payrard <[EMAIL PROTECTED]> wrote:
 
> > Siva is a type that acts as a hash, array , string scalar, int
> > scalar. It is intended as the type for nodes of attributed trees
> > These attributed trees may probably be of various kinds such as
> > parse trees and XML trees. The intensive use of context should
> > minimize explicit structure walking.
> 
> > Hashes and arrays are allocated only when needed.

I meant for a given pmc, the hash, array, or string that it may
contain is allocated only when necessary.

> 
> > I have a problem with siva.t. The pasm code is the same as
> > siva.pasm though.
> 
> What problem?

Apparently, there is a problem in the reading of siva.so.
I did not yet check how Parrot::Test run that makes the parrot
run differently than running directly parrot dynclasses/siva.pasm
siva.t must be updated anyway to reflect that I made siva a
dynamically loaded pmc.

> 
> > +/* rhs and lhs versions needed to avoid the msg "warning: use of cast expressions 
> > as lvalues is deprecated"
> 
> Have a look at LVALUE_CAST()
> 
> > +#define siva_hash(a)  ((siva*) PMC_pmc_val(a))->hash
> 
> > +#define siva_str(a)  ((siva*) PMC_pmc_val(a))->s
> 
> What happens, if I create a hash and extract a string?

Should work. They live in different fields of the siva struct. At
this point my tests in siva.pasm were just that: toverify that the
different structures are correctly allocated and that they don't
overlap.

--
 stef

> 
> 
> leo
> 


Re: [perl #32092] Strange segfault when concatenating strings

2004-10-24 Thread Matthias Hölzl
Leopold Toetsch wrote:
Matthias . Hoelzl @ ifi . lmu . de <[EMAIL PROTECTED]> wrote:
 

Parrot segfaults when executing the appended function.
   

It's hard to tell, what's the problem. A debugger backtrace with
information about the relevant variables could help.
And: if the code runs with "parrot -G" then it's likely a GC bug. If the
segfault is happening earlier, when you run with --gc-debug and/or -t,
the it's very likely a GC bug.
 

The code runs fine with the "-G" flag and also with the "--gc-debug" 
flag.   It segfaults  before finishing the first test when run with the 
-t flag.
I have appended a backtrace with information about the relevant 
variables.  The backtrace seems to support your conclusion that the 
segfault happens during garbage collection.

Best is of course to extract a small piece of code that exposes the
error :)
 

Sorry. I tried for some time to generate a small test case.  But as soon 
as I remove significant parts of the program, the segfault disappears... :-|

Matthias
Current directory is /usr/local/parrot-0.1.1/bin/
GNU gdb Red Hat Linux (6.0post-0.20040223.19rh)
Copyright 2004 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 "i386-redhat-linux-gnu"...Using host libthread_db library 
"/lib/tls/libthread_db.so.1".

(gdb) cd /home/tc/prog/parrot/girls/tests 
Working directory /home/tc/prog/parrot/girls/tests.
(gdb) run test-bootstrap.pbc
Starting program: /usr/local/parrot-0.1.1/bin/parrot test-bootstrap.pbc
[Thread debugging using libthread_db enabled]
[New Thread -151099072 (LWP 5119)]
[New Thread -159786064 (LWP 5122)]
[New Thread -170275920 (LWP 5123)]
Starting main
Testing binding...done
Generating global get...done
Generating global get...done
Generating global set...done
Generating global set...done
Generating scope_entry...done
Generating scope_exit...done
Generating lexical get...done
Generating lexical get...done
Generating lexical set...done
Generating lexical set...done
Generating invocation...done
Generating label...done
Generating label...done
Generating label...done
Generating label...done
Generating function header...done
Generating function header...done
Generating function header...done
Generating temporary name...done
Generating temporary name...done
Generating temporary name...done
Generating temporary name...done
Generating temporary name...done
Compiling literal list...done

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -151099072 (LWP 5119)]
0x080e4169 in pobject_lives (interpreter=0x940a008, obj=0x11) at src/dod.c:198
(gdb) print *interpreter
$1 = {int_reg = {registers = {1, 0, 0, 1, 0 }}, num_reg = {registers 
= {
  0 }}, string_reg = {registers = {0x95df60c, 0x0, 0x0, 0x0, 
0x0, 0x9546744, 
  0x954678c, 0x95472a8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9546744, 
  0x0 }}, pmc_reg = {registers = {0x943d800, 0x943d848, 
0x943e580, 0x9448338, 
  0x9448338, 0x943d9b0, 0x95a52f0, 0x9448338, 0x9448338, 0x9448338, 0x9448338, 
0x9448338, 
  0x9448338, 0x9448338, 0x9448338, 0x9448338, 0x943d9b0, 0x943d848, 0x943d800, 
0x943d998, 
  0x9448338 }}, ctx = {int_reg_stack = 0x95ad0b0, num_reg_stack 
= 0x95b9d70, 
string_reg_stack = 0x95ad290, pmc_reg_stack = 0x95ad230, pad_stack = 0x95c0170, 
user_stack = 0x95c0140, control_stack = 0x95c0110, intstack = 0x95c01a8, warns = 
0, errors = 1, 
current_class_offset = 0, recursion_depth = 3, runloop_level = 1, current_sub = 
0x943d860, 
current_cont = 0x943d848, current_object = 0x943e580}, globals = 0x942ced8, 
  arena_base = 0x940a798, class_hash = 0x95a9d60, piodata = 0x940a380, op_lib = 
0x82c7e40, 
  op_count = 1570, op_info_table = 0x82b3f20, op_func_table = 0x82b2680, 
evc_func_table = 0x95e9d28, 
  save_func_table = 0x82b2680, n_libs = 0, all_op_libs = 0x0, flags = NO_FLAGS, 
  run_core = PARROT_SLOW_CORE, profile = 0x0, cur_pc = 0xf538be10, resume_flag = 0, 
resume_offset = 0, 
  code = 0x95c3dc8, prederef = {code = 0x0, branches = 0x0, n_branches = 0, 
n_allocated = 0}, 
  jit_info = 0x0, imc_info = 0x95c3d88, current_line = 0, current_file = 0x95966e8, 
  current_package = 0x9597fcc, pdb = 0x0, lo_var_ptr = 0xfeed4dc0, parent_interpreter 
= 0x0, 
  world_inited = 1, iglobals = 0x95a96a0, DOD_registry = 0x0, binop_mmd_funcs = 
0x942d9b8, 
  n_binop_mmd_funcs = 50, caches = 0x95acfe0, const_cstring_table = 0x942d5f0, 
task_queue = 0x95c3d30, 
  sleeping = 0, exceptions = 0x95e9c68, exc_free_list = 0x95f2e40, exception_list = 
0x95c05b8, 
  thread_data = 0x0, recursion_limit = 1000}
(gdb) print *obj
Cannot access memory at address 0x11
(gdb) up
#1  0x080a09da in mark_1_seg (interpreter=0x940a008, cs=0x95c3f68) at 
src/packfile.c:360
(gdb) print *cs
$2 = {base = {pf 

Re: [perl #32118] AutoReply: [PATCH] Update of documentation

2004-10-24 Thread Robert Spier
> - do not change viewcvs in glossary.doc to cvsweb, just correct the
>   link

Please _do_ change all references to cvsweb to viewcvs.  Unless there
is a compelling reason, we will continue to phase out use of cvsweb.
viewcvs is faster, cleaner, and has more features.

-R


Re: [perl #32118] [PATCH] Update of documentation

2004-10-24 Thread Robert Spier
> Maybe there are some good links to Tinderbox or Bonsai or ViewCVS or they
> are only temporarily down, I don't know, but having non-functional 
> references in documentation is not very good.

Tinderbox is temporarily down.  Either Zach needs to fix it, or I need
to finish my replacement for it.

Bonsai is something I don't think anyone ever used.  I have a Bonsai
replacement on deck, although the front-end doesn't seem to work so
well.  (Bonsai is basically a searchable database of all checkins.)

If a Bonsai-type tool is important to anyone, something can be made to
happen.

ViewCVS is a fully supported system.  If it's ever down, something is wrong.

> Note that some of these apply to http://www.parrotcode.org/resources.html 
> too.

Patches for this can be generated against:
https://svn.perl.org/perl.org/docs/live/parrotcode/ (guest/guest)
Please send them to webmaster at perl.org.

-R