[(Possible) Bug Report] g++-4.8 (slightly) breaks GiNaC::symbol
Hey, I had a weird problem using GiNaC with g++-4.8. It seems that GiNac::symbol will be deleted twice if it's not dynamically declared. In other words, some resources in it is free'd before the automatic destructor is called when the scope finishes. The minimum code to re-produce the issue is: #include <ginac/ginac.h> int main() { GiNaC::symbol x("x"); return 0; } $ g++-4.8 -g -o main main0.cc -lginac -lcln && ./main main(69018) malloc: *** error for object 0x7fff73275570: pointer being freed was not allocated It seems this issue only exists in g++-4.8. g++-4.7 is fine. I briefly looked at symbol.h but did not manage to locate the problem. I was hoping someone here more familiar with the code base could fix it or provide some direction for me. Thanks. -- Song Gao http://song.gao.io/
Hey, On 03/25/2013 03:34 AM, Song Gao wrote:
I had a weird problem using GiNaC with g++-4.8. It seems that GiNac::symbol will be deleted twice if it's not dynamically declared. In other words, some resources in it is free'd before the automatic destructor is called when the scope finishes.
The minimum code to re-produce the issue is:
#include <ginac/ginac.h>
int main() { GiNaC::symbol x("x"); return 0; }
$ g++-4.8 -g -o main main0.cc -lginac -lcln && ./main main(69018) malloc: *** error for object 0x7fff73275570: pointer being freed was not allocated
It seems this issue only exists in g++-4.8. g++-4.7 is fine.
I briefly looked at symbol.h but did not manage to locate the problem. I was hoping someone here more familiar with the code base could fix it or provide some direction for me. Thanks.
-- Song Gao http://song.gao.io/
I just bootstrapped gcc 4.8 and compiled and ran your example without problem. Also, it passes all tests of the test suite, both for a static and dynamic library. For reference, and to help you experiment further, here is my setup: $ gcc-4.8 -v Using built-in specs. COLLECT_GCC=gcc-4.8 COLLECT_LTO_WRAPPER=/data/scratch/libexec/gcc/x86_64-unknown-linux-gnu/4.8.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-4.8.0-RC-20130316/configure --enable-languages=c,c++ --prefix=/data/scratch --program-suffix=-4.8 --enable-shared --enable-linker-build-id --with-system-zlib --disable-nls --enable-checking=release Thread model: posix gcc version 4.8.0 20130316 (prerelease) (GCC) -richy. -- Richard B. Kreckel <http://www.ginac.de/~kreckel/>
participants (2)
-
Richard B. Kreckel
-
Song Gao