Leopold Toetsch wrote:
> Ron Blaschke wrote:
>> Ron Blaschke wrote:

>>>>>t\pmc\bigint.t            1   256    22    1   4.55%  22

>> The problem seems to be caused by the C<free(s);> in
>> F<bigint.pmc/get_string>.  Well, not the actual cause, but that's
>> where we fail.

> mpz_get_str() returned a string that was very likely allocated by a 
> different "default allocation function".

> This is now changed (rev 8129) by first querying the required string
> length and using Parrot's allocation function so that the free should be
> ok now.

Thought about that too, but then checked the allocation/deallocation
functions, which are simple wrappers around C<malloc> and C<free>, and
stopped there.

What really bothers me is that the behaviour changed with CPU load.
The expected output is print with high CPU load, but not with low, and
can be reproduced.  I have this weird feeling I usually only get with
uninitialzed writes and data race conditions lurking behind my back.

t/pmc/bigint now passes, but with Rev 8133 there are several other
failures (even with a fresh checkout).

Failed Test             Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
imcc\t\reg\spill.t         1   256     9    1  11.11%  5
imcc\t\syn\objects.t      11  2816    11   11 100.00%  1-11
imcc\t\syn\tail.t          1   256     6    1  16.67%  6
t\dynclass\foo.t           3   768     3    3 100.00%  1-3
t\dynclass\gdbmhash.t     13  3328    13   13 100.00%  1-13
t\dynclass\pybuiltin.t     6  1536     6    6 100.00%  1-6
t\dynclass\pyclass.t       6  1536     6    6 100.00%  1-6
t\dynclass\pycomplex.t     2   512     2    2 100.00%  1-2
t\dynclass\pyfunc.t        4  1024     4    4 100.00%  1-4
t\dynclass\pyint.t        26  6656    26   26 100.00%  1-26
t\library\dumper.t        26  6656    26   26 100.00%  1-26
t\library\getopt_long.t    1   256     1    1 100.00%  1
t\library\pcre.t         255 65280     1    2 200.00%  1
t\library\pge.t            3   768     3    3 100.00%  1-3
t\library\streams.t       20  5120    20   20 100.00%  1-20
t\op\gc.t                  4  1024    19    4  21.05%  10-11 14 19
t\op\spawnw.t              5  1280     6    5  83.33%  2-6
t\op\string.t              1   256   155    1   0.65%  140
t\pmc\exception.t          1   256    30    1   3.33%  21
t\pmc\freeze.t             8  2048    26    8  30.77%  17-24
t\pmc\mmd.t                8  2048    25    8  32.00%  9 12-16 23-24
t\pmc\object-meths.t      25  6400    28   25  89.29%  1-15 17-20 22-26 28
t\pmc\objects.t           52 13312    62   52  83.87%  1-4 8-15 17-37 40-44 46-
                                                       52 54-56 58 60-62
t\pmc\threads.t            1   256    11    1   9.09%  4
2 tests and 63 subtests skipped.
Failed 24/151 test scripts, 84.11% okay. 229/2483 subtests failed, 90.78% okay.

The error message usually goes like this.

...
#          got: 'Can't spawn ".\parrot.exe -b --gc-debug "t\op\gc_10.pasm"":
Bad file descriptor at lib/Parrot/Test.pm line 230.
...

To Be Continued...

Ron


Reply via email to