Valgrind: Difference between revisions
No edit summary |
./a4 for valgrind testing |
||
| (One intermediate revision by the same user not shown) | |||
| Line 2: | Line 2: | ||
When running ASCEND through valgrind, the following approach is suggested: | When running ASCEND through valgrind, the following approach is suggested: | ||
<source lang=sh> | |||
cd ~/ascend | |||
scons -j7 test a4 ascend solvers | |||
./a4 --valgrind test/test compiler_blackbox # or whatever the test is that you want to run | |||
./a4 --valgrind test/test_expectpass_leaky # a collection of calls that are known to still be leaky | |||
</source> | |||
If you don't want to use the <tt>a4</tt> script, you can set the required env vars directly: | |||
<source lang=sh> | <source lang=sh> | ||
| Line 28: | Line 37: | ||
As [[Ben Allan]] mentioned, a '''small amount of memory leakage''' from ASCEND is perfectly tolerable, providing it is fixed in magnitude, for example global variables that do not grow in time during an ASCEND process. We have a number of such 'leakages' in ASCEND resulting from dlopening of [[external relations]] and the like. Getting rid of these leakages is difficult and has not been prioritised at this stage. | As [[Ben Allan]] mentioned, a '''small amount of memory leakage''' from ASCEND is perfectly tolerable, providing it is fixed in magnitude, for example global variables that do not grow in time during an ASCEND process. We have a number of such 'leakages' in ASCEND resulting from dlopening of [[external relations]] and the like. Getting rid of these leakages is difficult and has not been prioritised at this stage. | ||
The technique for adding items to the suppressions list is [https://wiki.wxwidgets.org/Valgrind_Suppression_File_Howto described in the Valgrind documention]. | |||
[[Category:Development]] | [[Category:Development]] | ||
Latest revision as of 04:29, 3 May 2025
Valgrind is a tool that can detect memory leaks and invalid attempts to access memory, or perform actions that depend on the contents of uninitialised memory.
When running ASCEND through valgrind, the following approach is suggested:
Invalid language.
You need to specify a language like this: <source lang="html">...</source>
Supported languages for syntax highlighting:
a4c, abap, abc, abnf, actionscript, ada, agda, alan, algol, ampl, amtrix, applescript, arc, arm, as400cl, ascend, asciidoc, asp, aspect, assembler, ats, autohotkey, autoit, avenue, awk, ballerina, bat, bbcode, bcpl, bibtex, biferno, bison, blitzbasic, bms, bnf, boo, c, carbon, ceylon, charmm, chill, chpl, clean, clearbasic, clipper, clojure, clp, cmake, cobol, coffeescript, coldfusion, conf, cpp2, critic, crk, crystal, cs_block_regex, csharp, css, d, dart, delphi, diff, dockerfile, dts, dylan, ebnf, ebnf2, eiffel, elixir, elm, email, erb, erlang, euphoria, exapunks, excel, express, factor, fame, fasm, felix, fish, fortran77, fortran90, frink, fsharp, fstab, fx, gambas, gdb, gdscript, go, graphviz, haml, hare, haskell, haxe, hcl, html, httpd, hugo, icon, idl, idlang, inc_luatex, informix, ini, innosetup, interlis, io, jam, jasmin, java, javascript, js_regex, json, jsp, jsx, julia, kotlin, ldif, less, lhs, lilypond, limbo, lindenscript, lisp, logtalk, lotos, lotus, lua, luban, makefile, maple, markdown, matlab, maya, mercury, meson, miranda, mod2, mod3, modelica, moon, ms, msl, mssql, mxml, n3, nasal, nbc, nemerle, netrexx, nginx, nice, nim, nix, nsis, nxc, oberon, objc, ocaml, octave, oorexx, org, os, oz, paradox, pas, pdf, perl, php, pike, pl1, plperl, plpython, pltcl, po, polygen, pony, pov, powershell, pro, progress, ps, psl, pure, purebasic, purescript, pyrex, python, q, qmake, qml, qu, r, rebol, rego, rexx, rnc, rpg, rpl, rst, ruby, rust, s, sam, sas, scad, scala, scilab, scss, shellscript, slim, small, smalltalk, sml, snmp, snobol, solidity, spec, spn, sql, squirrel, styl, svg, swift, sybase, tcl, tcsh, terraform, tex, toml, tsql, tsx, ttcn3, txt, typescript, upc, vala, vb, verilog, vhd, vimscript, vue, wat, whiley, wren, xml, xpp, yaiff, yaml, yaml_ansible, yang, zig, znn
If you don't want to use the a4 script, you can set the required env vars directly:
Invalid language.
You need to specify a language like this: <source lang="html">...</source>
Supported languages for syntax highlighting:
a4c, abap, abc, abnf, actionscript, ada, agda, alan, algol, ampl, amtrix, applescript, arc, arm, as400cl, ascend, asciidoc, asp, aspect, assembler, ats, autohotkey, autoit, avenue, awk, ballerina, bat, bbcode, bcpl, bibtex, biferno, bison, blitzbasic, bms, bnf, boo, c, carbon, ceylon, charmm, chill, chpl, clean, clearbasic, clipper, clojure, clp, cmake, cobol, coffeescript, coldfusion, conf, cpp2, critic, crk, crystal, cs_block_regex, csharp, css, d, dart, delphi, diff, dockerfile, dts, dylan, ebnf, ebnf2, eiffel, elixir, elm, email, erb, erlang, euphoria, exapunks, excel, express, factor, fame, fasm, felix, fish, fortran77, fortran90, frink, fsharp, fstab, fx, gambas, gdb, gdscript, go, graphviz, haml, hare, haskell, haxe, hcl, html, httpd, hugo, icon, idl, idlang, inc_luatex, informix, ini, innosetup, interlis, io, jam, jasmin, java, javascript, js_regex, json, jsp, jsx, julia, kotlin, ldif, less, lhs, lilypond, limbo, lindenscript, lisp, logtalk, lotos, lotus, lua, luban, makefile, maple, markdown, matlab, maya, mercury, meson, miranda, mod2, mod3, modelica, moon, ms, msl, mssql, mxml, n3, nasal, nbc, nemerle, netrexx, nginx, nice, nim, nix, nsis, nxc, oberon, objc, ocaml, octave, oorexx, org, os, oz, paradox, pas, pdf, perl, php, pike, pl1, plperl, plpython, pltcl, po, polygen, pony, pov, powershell, pro, progress, ps, psl, pure, purebasic, purescript, pyrex, python, q, qmake, qml, qu, r, rebol, rego, rexx, rnc, rpg, rpl, rst, ruby, rust, s, sam, sas, scad, scala, scilab, scss, shellscript, slim, small, smalltalk, sml, snmp, snobol, solidity, spec, spn, sql, squirrel, styl, svg, swift, sybase, tcl, tcsh, terraform, tex, toml, tsql, tsx, ttcn3, txt, typescript, upc, vala, vb, verilog, vhd, vimscript, vue, wat, whiley, wren, xml, xpp, yaiff, yaml, yaml_ansible, yang, zig, znn
where in the above, TESTNAME is replaced by a valid test case or test suite, use test/test -l and test/test -tSUITENAME to list available options.
The above approach requires that you have CUnit installed on your system (see our notes on this), and that you have configured the 'scons' flags correctly so that it is detected on your system.
Valgrind can also be used with Python-based scripts, but you will need to be prepared to add suppressions for a large number of warnings/errors that Valgrind detects from Python itself.
As Ben Allan mentioned, a small amount of memory leakage from ASCEND is perfectly tolerable, providing it is fixed in magnitude, for example global variables that do not grow in time during an ASCEND process. We have a number of such 'leakages' in ASCEND resulting from dlopening of external relations and the like. Getting rid of these leakages is difficult and has not been prioritised at this stage.
The technique for adding items to the suppressions list is described in the Valgrind documention.