Ticket #13719 (closed defect: fixed)
Illegal free in graph_generators
|Reported by:||nbruin||Owned by:||rlm|
|Component:||graph theory||Keywords:||graphs segfault|
|Report Upstream:||N/A||Reviewers:||Nathann Cohen|
|Authors:||Jean-Pierre Flori||Merged in:||sage-5.6.beta0|
Description (last modified by jpflori) (diff)
$ export MALLOC_CHECK_=3 $ sage -t -gdb -force_lib "devel/sage/sage/graphs/graph_generators.py"
produces a SIGABRT. gdb traceback (first bit):
#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 0x00007fffbe7eeead in sage_free (ptr=<optimized out>) at /usr/local/sage/5.0/local/include/csage/memory.h:46 #5 __pyx_pf_4sage_6graphs_5trees_12TreeIterator_1__dealloc__ (__pyx_v_self=0x7fffbf10c930) at sage/graphs/trees.c:807 #6 __pyx_tp_dealloc_4sage_6graphs_5trees_TreeIterator (o=0x7fffbf10c930) at sage/graphs/trees.c:2486 #7 0x00007ffff7cc6bf3 in tupledealloc (op=0x7fffc3890450) at Objects/tupleobject.c:220 #8 0x00007ffff7d12c49 in do_call (nk=<optimized out>, na=<optimized out>, pp_stack=0x7fffffffb990, func=0x7ffff7fc33e0) at Python/ceval.c:4233 ...
For tree with no vertices, no memory was allocated (more or less as intended, with a malloc with size 0), but the next routine of the iterator tries to write something at the "allocated" address.
This is fixed by handling separately the 0 sized trees and not allocating nor writing anything in this case.
- Keywords graphs segfault added
- Status changed from new to needs_review
- Component changed from memleak to graph theory
- Description modified (diff)
- Authors set to Jean-Pierre Flori