On Wednesday, November 14, 2012 8:58:45 PM UTC-6, Jean-Pierre Flori wrote:
>
>
>
> On Wednesday, November 14, 2012 5:42:27 PM UTC-6, Nils Bruin wrote:
>>
>> However, in an effort to make memory errors during testing a little 
>> more reproducible I made this little edit to local/bin/sagedoctest.py 
>> to ensure the garbage collector is run before every doctested line: 
>>
>> -------------------------------------------------------------------- 
>> diff --git a/sagedoctest.py b/sagedoctest.py 
>> --- a/sagedoctest.py 
>> +++ b/sagedoctest.py 
>> @@ -1,7 +1,9 @@ 
>>  from __future__ import with_statement 
>>
>>  import ncadoctest 
>> +import gc 
>>  import sage.misc.randstate as randstate 
>> +import sys 
>>
>>  OrigDocTestRunner = ncadoctest.DocTestRunner 
>>  class SageDocTestRunner(OrigDocTestRunner): 
>> @@ -35,6 +37,8 @@ class SageDocTestRunner(OrigDocTestRunne 
>>                  except Exception, e: 
>>                      self._timeit_stats[key] = e 
>>          # otherwise, just run the example 
>> +        sys.stderr.write('testing example %s\n'%example) 
>> +        gc.collect() 
>>          OrigDocTestRunner.run_one_example(self, test, example, 
>> filename, compileflags) 
>>
>>      def save_timeit_stats_to_file_named(self, output_filename): 
>> -------------------------------------------------------------------- 
>>
>> (i.e., just add a gc.collect() to run_one_example) 
>>
>> and it causes a reliable failure in crypto/mq/mpolynomialsystem.py: 
>>
>> Trying: 
>>     C[Integer(0)].groebner_basis()###line 84:_sage_    sage: 
>> C[0].groebner_basis() 
>> Expecting: 
>>     Polynomial Sequence with 26 Polynomials in 16 Variables 
>> testing example <ncadoctest.Example instance at 0x69706c8> 
>> ok 
>> Trying: 
>>     A,v = mq.MPolynomialSystem(r2).coefficient_matrix()###line 
>> 87:_sage_    sage: A,v = mq.MPolynomialSystem(r2).coefficient_matrix() 
>> Expecting nothing 
>> testing example <ncadoctest.Example instance at 0x6970710> 
>> *** glibc detected *** python: double free or corruption (out): 
>> 0x00000000075c58c0 *** 
>> ======= Backtrace: ========= 
>> /lib64/libc.so.6[0x31cfe7da76] 
>> /lib64/libc.so.6[0x31cfe7ed5e] 
>> /usr/local/sage/5.5b2/local/lib/python/site-packages/sage/rings/ 
>> polynomial/pbori.so(+0x880aa)[0x7fa5eba7e0aa] 
>> /usr/local/sage/5.5b2/local/lib/python/site-packages/sage/rings/ 
>> polynomial/pbori.so(+0x1d993)[0x7fa5eba13993] 
>> ... 
>>
>> Running it under sage -t --gdb gives: 
>>
>> (gdb) bt 
>> #0  0x00000031cfe36285 in raise () from /lib64/libc.so.6 
>> #1  0x00000031cfe37b9b in abort () from /lib64/libc.so.6 
>> #2  0x00000031cfe7774e in __libc_message () from /lib64/libc.so.6 
>> #3  0x00000031cfe7da76 in malloc_printerr () from /lib64/libc.so.6 
>> #4  0x00000031cfe7ed5e in _int_free () from /lib64/libc.so.6 
>> #5  0x00007fffce5cb0aa in 
>> Delete<polybori::groebner::ReductionStrategy> (mem=0x547db30) 
>>     at /usr/local/sage/5.5b2/local/include/csage/ccobject.h:77 
>> #6 
>> __pyx_pf_4sage_5rings_10polynomial_5pbori_17ReductionStrategy_2__dealloc__ 
>>
>> (__pyx_v_self=<optimized out>) 
>>     at sage/rings/polynomial/pbori.cpp:37868 
>> #7 
>> __pyx_pw_4sage_5rings_10polynomial_5pbori_17ReductionStrategy_3__dealloc__ 
>>
>> (__pyx_v_self=0x54bf390) 
>>     at sage/rings/polynomial/pbori.cpp:37834 
>> #8 
>> __pyx_tp_dealloc_4sage_5rings_10polynomial_5pbori_ReductionStrategy 
>> (o=0x54bf390) at sage/rings/polynomial/pbori.cpp:52283 
>> #9  0x00007fffce560993 in 
>> __pyx_tp_clear_4sage_5rings_10polynomial_5pbori_GroebnerStrategy 
>> (o=0x54baeb0) 
>>     at sage/rings/polynomial/pbori.cpp:52545 
>> #10 0x00007ffff7d4b637 in delete_garbage (old=0x7ffff7fe19e0, 
>> collectable=0x7fffffffbb60) at Modules/gcmodule.c:769 
>> #11 collect (generation=2) at Modules/gcmodule.c:930 
>> #12 0x00007ffff7d4bdc9 in gc_collect (self=<optimized out>, 
>> args=<optimized out>, kws=<optimized out>) at Modules/gcmodule.c:1067 
>>
>> which should give a pretty good pointer for pbori people to figure out 
>> which memory deallocation is actually botched. 
>>
> We dealt with something very similar in one of the "memleaks" tickets.
> Not sure it was 715 or 11521, but maybe 12313 (the figures here might be 
> wrong...).
> So the fix is potentially not included in 5.5.beta2 if it was in the later.
>  
>
Ok, I took the time to check and you actually posted in 13710 that the fix 
is included in 12313, so not in 5.5.beta2 if I'm not wrong (nor 5.0 of 
course). 

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To post to this group, send email to sage-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-devel+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel?hl=en.


Reply via email to