From: Matt Diephouse (via RT) <[EMAIL PROTECTED]>
   Date: Sat, 11 Nov 2006 16:46:20 -0800

   If a loadlib fails, it doesn't throw a catchable exception. The t/
   library/pg.t test was changed because it was failing on platforms
   where pg wasn't available. In particular, this assertion was getting
   tripped on:

   src/inter_call.c:122: failed assertion `PObj_is_PMC_TEST(sig_pmc) &&  
   sig_pmc->vtable->base_type == enum_class_FixedIntegerArray'
   Abort trap

I don't think it's loadlib itself; I believe the library :init code is
trying to throw an error.  If that is the case, then it's a continuation
barrier problem.  Before the error, do you see this "oops" message?

    [EMAIL PROTECTED]> ./parrot t/library/pg.t
    1..43
    [oops; continuation 0x81e4d64 of type 25 is trying to jump from runloop 9 
to runloop 1]
    not ok 1 #skip skipped
    not ok 2 #skip skipped
    not ok 3 #skip skipped
    not ok 4 #skip skipped
    not ok 5 #skip skipped
    . . .

The :init code in runtime/parrot/library/postgres.pir is running in a
separate runloop, so when it throws an error, the error doesn't actually
get to the handler, and the loadlib op appears to complete normally.

   I don't recall seeing this "failed assertion" before, though.
Probably we should turn this "oops" into an internal_exception, since
memory might be getting corrupted subsequently.

   The fix was this patch . . .

   Looks good to me.  I see chromatic has already committed this as
r15413.

                                        -- Bob Rogers
                                           http://rgrjr.dyndns.org/

Reply via email to