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