parrot: src/string.c:448: string_append: Assertion `b->encoding &&
b->charset && !(((b)->obj.flags) & b_PObj_on_free_list_FLAG)' failed.
If I insert print instructions into the pir file, the point at which the
program fails changes arbitrarily.
If I run the program with --no-gc, it runs normally.
If I run it with -t, it fails consistently right near the beginning:
$ parrot -t string_operations.pir
3 warningson 255
5 store_global "_argv", P0 - , P0=SArray=PMC(0x8ae4610)
8 newclass P0, "ANY" - P0=SArray=PMC(0x8ae4610),
11 getclass P1, "Amber_INTEGER" - P1=PMCNULL,
14 getclass P1, "Amber_BOOLEAN" - P1=parrot: src/string.c:448:
string_append: Assertion `b->encoding && b->charset
&& !(((b)->obj.flags) & b_PObj_on_free_list_FLAG)' failed.
Aborted
The program exercises a whole load of string functions (appending,
repeating, substringing etc)
If anyone wants to try running the pir, it's here:
http://xamber.org/temp/string_operations.pir
(first build the pmcs: cd languages/amber && make all)
but really I'd be grateful for any tips about how to locate the problem.
Regards,
Roger Browne
> I wonder if anyone has any ideas how I can track down the source of a
> problem that I am having. I have a pir file that runs fine under 0.4.0,
> but under the latest svn fails with this message:
>
> parrot: src/string.c:448: string_append: Assertion `b->encoding &&
> b->charset && !(((b)->obj.flags) & b_PObj_on_free_list_FLAG)'
> failed.
This means that at that line a GC-collected strings is used - the RHS
of concat is dead (on the free list).
> If I insert print instructions into the pir file, the point at which
> the
> program fails changes arbitrarily.
That's the nice thing with GC bugs ;-)
> If I run the program with --no-gc, it runs normally.
The bad news is I can't reproduce this with trunk, all combinations of
-t, --gc-debug are working.
There is another issue though 'make all' inside amber currently needs a
statically linked parrot. I don't know, if this is amber- or
parrot-related though.
> Regards,
> Roger Browne
leo
> There is another issue though 'make all' inside amber currently needs
> a statically linked parrot. I don't know, if this is amber- or
> parrot-related though.
Works with tcl - so it's probably an amber Makefile issue.
leo
Thanks for trying this, Leo.
What is a non-"statically-linked parrot"? Is it what I get by giving the
"--parrot_is_shared" argument to Configure.pl?
The amber PMCs build for me with or without this option. How does it
fail when you build the PMCs without a statically linked parrot? (might
be a clue to my other problem).
Regards,
Roger Browne
> What is a non-"statically-linked parrot"? Is it what I get by giving
> the
> "--parrot_is_shared" argument to Configure.pl?
I did
$ ./doit
$ cd languages/amber
$ make clean all
and got an error (Makefile related) - then:
$ ./doit --parrot_is_shared=0
$ cd languages/amber
$ make all
and amber worked. ./doit is basically 'perl Configure.pl "$@" && make
all test' e.g.
perl Configure.pl --maintainer --icuheaders=/usr/include "$@"
--icushared='-licuuc -licudata'
nice make -s all test
> Regards,
> Roger Browne
leo