[Pkg-parrot-devel] parrot FTBS on ia64 mipsel and sparc

Allison Randal allison at parrot.org
Sat Apr 14 23:00:28 UTC 2012


On 04/14/2012 10:18 PM, Alessandro Ghedini wrote:
> Hi,
> 
> I've just noticed that parrot 4.0.0 fails to build from source on ia64 mipsel
> and sparc [0] with the same "Bus error" when calling:
> 
>> ./miniparrot -Iruntime/parrot/include config_lib.pir > runtime/parrot/include/config.fpmc
> 
> and I can reproduce the failures in the respective porterboxes (I've tried
> smetana.d.o for sparc and eder.d.o for mipsel). The same happens with the
> latest revision in the upstream git repository.

Bus error is a memory handling error. Is there a way that I or others
can get access to the porter boxes?

> gdb says:
> 
>> (gdb) r -Iruntime/parrot/include config_lib.pir > runtime/parrot/include/config.fpmc
>> Starting program: /home/ghedo/parrot/miniparrot -Iruntime/parrot/include config_lib.pir > runtime/parrot/include/config.fpmc
>> [Thread debugging using libthread_db enabled]
>> Using host libthread_db library "/lib/mipsel-linux-gnu/libthread_db.so.1".
>>
>> Program received signal SIGBUS, Bus error.
>> 0x2add0f94 in Parrot_Task_init_orig (interp=0x418028, _self=PMC<Task> = {...}) at src/pmc/task.c:413
>> 413	    core_struct->birthtime = Parrot_floatval_time();

I'd look closely at this struct access into birthtime. There's a good
chance that whatever type birthtime is on ia64, mipsel, and sparc cannot
accept the value returned by Parrot_floatval_time.

>> (gdb) bt
>> #0  0x2add0f94 in Parrot_Task_init_orig (interp=0x418028, _self=PMC<Task> = {...}) at src/pmc/task.c:413
>> #1  0x2adcee74 in Parrot_Task_init (interp=0x418028, _self=PMC<Task> = {...}) at src/pmc/task.c:128
>> #2  0x2ac3f908 in Parrot_pmc_new (interp=0x418028, base_type=91) at src/pmc.c:217
>> #3  0x2ac4d0d4 in Parrot_cx_begin_execution (interp=0x418028, main=PMC<Sub> = {...}, argv=PMC<ResizableStringArray> = {...}) at src/scheduler.c:100
>> #4  0x2ac60f78 in Parrot_pf_execute_bytecode_program (interp=0x418028, pbc=PMC<PackfileView> = {...}, args=PMC<ResizableStringArray> = {...}) at src/packfile/api.c:2677
>> #5  0x2abd2c2c in Parrot_api_run_bytecode (interp_pmc=0x4a64c4, pbc=0x4aceac, args=0x4acde4) at src/embed/bytecode.c:161
>> #6  0x00401598 in main (argc=3, argv=0x7fff3c94) at frontend/parrot/main.c:226
> 
> (this was taken with the code from git on mipsel). I'm now running a git bisect
> (again, on mipsel), it will take some time though.

You can do a quick bisect to start with, only looking at changes to
src/pmc/task.pmc. There aren't very many since 3.6.0, which is the last
release that successfully built on ia64, mipsel, and sparc.

https://github.com/parrot/parrot/commits/master/src/pmc/task.pmc

git blame reports that the questionable line was added in this revision:

https://github.com/parrot/parrot/commit/f35c165d0e8cd0820588d1216d8bb9c8cd073488#diff-6

So, I'd start by checking before and after that one change. (Though you
may have to go a little farther back or forward if there are several
related commits together.)

Allison


More information about the parrot-dev mailing list