[GiNaC-list] Crash Ginsh when trying to solve equation involving integral numerically

Joerg Arndt arndt at jjj.de
Tue Aug 17 13:49:19 CEST 2010


Valgrind may be of help:

% valgrind --leak-check=full --show-reachable=yes ginsh
==5369== Memcheck, a memory error detector
==5369== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==5369== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info
==5369== Command: ginsh
==5369== 
ginsh - GiNaC Interactive Shell (ginac V1.5.8)
  __,  _______  Copyright (C) 1999-2010 Johannes Gutenberg University Mainz,
 (__) *       | Germany.  This is free software with ABSOLUTELY NO WARRANTY.
  ._) i N a C | You are welcome to redistribute it under certain conditions.
<-------------' For details type `warranty;'.

Type ?? for a list of help topics.
> fsolve((1/(sqrt(2*Pi)))*integral(t,0,x,exp(-1/2*t^2))==0.5,x,0,100)
==5369== Invalid read of size 4
==5369==    at 0x4F64D60: GiNaC::fsolve(GiNaC::ex const&, GiNaC::symbol const&, GiNaC::numeric const&, GiNaC::numeric const&) (object.h:211)
==5369==    by 0x4118B7: f_fsolve(GiNaC::container<std::vector> const&) (ginsh_parser.yy:442)
==5369==    by 0x416B6C: yyparse() (ginsh_parser.yy:256)
==5369==    by 0x417C0F: main (ginsh_parser.yy:960)
==5369==  Address 0x7064b90 is 0 bytes inside a block of size 16 free'd
==5369==    at 0x4C25C8D: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==5369==    by 0x4EC9064: GiNaC::add::~add() (new_allocator.h:95)
==5369==    by 0x4F63D85: GiNaC::fsolve(GiNaC::ex const&, GiNaC::symbol const&, GiNaC::numeric const&, GiNaC::numeric const&) (ex.h:66)
==5369==    by 0x4118B7: f_fsolve(GiNaC::container<std::vector> const&) (ginsh_parser.yy:442)
==5369==    by 0x416B6C: yyparse() (ginsh_parser.yy:256)
==5369==    by 0x417C0F: main (ginsh_parser.yy:960)
==5369== 
==5369== Invalid write of size 4
==5369==    at 0x4F64D67: GiNaC::fsolve(GiNaC::ex const&, GiNaC::symbol const&, GiNaC::numeric const&, GiNaC::numeric const&) (object.h:211)
==5369==    by 0x4118B7: f_fsolve(GiNaC::container<std::vector> const&) (ginsh_parser.yy:442)
==5369==    by 0x416B6C: yyparse() (ginsh_parser.yy:256)
==5369==    by 0x417C0F: main (ginsh_parser.yy:960)
==5369==  Address 0x7064b90 is 0 bytes inside a block of size 16 free'd
==5369==    at 0x4C25C8D: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==5369==    by 0x4EC9064: GiNaC::add::~add() (new_allocator.h:95)
==5369==    by 0x4F63D85: GiNaC::fsolve(GiNaC::ex const&, GiNaC::symbol const&, GiNaC::numeric const&, GiNaC::numeric const&) (ex.h:66)
==5369==    by 0x4118B7: f_fsolve(GiNaC::container<std::vector> const&) (ginsh_parser.yy:442)
==5369==    by 0x416B6C: yyparse() (ginsh_parser.yy:256)
==5369==    by 0x417C0F: main (ginsh_parser.yy:960)
==5369== 
> 

Note no segfault happens.



More information about the GiNaC-list mailing list