jfrimmel / cargo-valgrind Goto Github PK
View Code? Open in Web Editor NEWA cargo subcommand, that runs valgrind and displays its output in a helpful manner.
Home Page: https://crates.io/crates/cargo-valgrind
License: Apache License 2.0
A cargo subcommand, that runs valgrind and displays its output in a helpful manner.
Home Page: https://crates.io/crates/cargo-valgrind
License: Apache License 2.0
Hi. Really awesome project. I love how much simpler it is to check for memory leaks etc with this tool. However I'm not able to run this on my integration tests on a Fedora Linux machine. I'm not sure if Cargo changed in some incompatible way or if I have an unsupported version of valgrind?
This is the software I'm running:
$ valgrind --version
valgrind-3.15.0
$ cargo valgrind --version
cargo-valgrind 1.3.0
$ cargo --version
cargo 1.43.0 (3532cf738 2020-03-17)
And this is the issue I'm getting:
$ cargo valgrind --test all_tests
...
error: Could not parse XML: custom: 'missing field `xwhat`'
Hello, thank your for your project.
I am encountering an issue where my program relies on the crate env_logger. It will respect my session's RUST_LOG
variable and what logs to show, but this program seems to be ignoring the variable.
When spawning a new process, could cargo-valgrind move the environment variables over to the child so that I can control the logger?
I need to test my bin by running it as sudo, but it doesn't work. Please, add possibility, to run final binary as sudo
In the 2.0.0
version of this crate, there is a plain panic, if valgrind is not installed or can otherwise not be run This is due to this lines (the .expect()
):
Lines 59 to 64 in 2da5213
It would be better to gracefully handle that case and print a user error, optionally with install instructions, e.g.:
$ cargo valgrind run; echo $?
error: `valgrind` is not installed, please install valgrind via your package manager.
127
Currently the leaked memory is always given in bytes:
Finished dev [unoptimized + debuginfo] target(s) in 0.35s
Analyzing `target/debug/huge_box`
Error Leaked 1048576 bytes
Info at malloc (vg_replace_malloc.c:299)
at alloc::alloc::alloc (alloc.rs:81)
at alloc::alloc::exchange_malloc (alloc.rs:203)
at new<[u8; 1048576]> (boxed.rs:113)
at huge_box::main (main.rs:2)
at std::rt::lang_start::{{closure}} (rt.rs:64)
at {{closure}} (rt.rs:49)
at std::panicking::try::do_call (panicking.rs:293)
at __rust_maybe_catch_panic (lib.rs:85)
at try<i32,closure> (panicking.rs:272)
at catch_unwind<closure,i32> (panic.rs:394)
at std::rt::lang_start_internal (rt.rs:48)
at std::rt::lang_start (rt.rs:64)
at main
It may be easier to read Leaked 1 MiB
instead of Leaked 1048576 bytes
.
The bytesize crate might be used.
See the output below. This is not optimal, as the dependencies lead to additional lines, which cause the output file to cross the length threshold.
cargo clippy
Updating crates.io index
Downloading crates ...
Downloaded terminal_size v0.1.16
Downloaded textwrap v0.13.4
Downloaded unicode-width v0.1.8
Downloaded lazy_static v1.4.0
Downloaded unicode-xid v0.2.0
Downloaded quote v1.0.3
Downloaded proc-macro2 v1.0.9
Downloaded error-chain v0.10.0
Downloaded colored v1.9.3
Downloaded cfg-if v0.1.10
Downloaded serde v1.0.105
Downloaded serde_derive v1.0.105
Downloaded libc v0.2.68
Downloaded log v0.4.8
Downloaded bytesize v1.0.0
Downloaded atty v0.2.14
Downloaded serde-xml-rs v0.3.1
Downloaded syn v1.0.17
Downloaded xml-rs v0.8.0
Downloaded smawk v0.3.1
Compiling proc-macro2 v1.0.9
Compiling libc v0.2.68
Compiling unicode-xid v0.2.0
Compiling syn v1.0.17
Compiling log v0.4.8
Compiling serde v1.0.105
Checking cfg-if v0.1.10
Checking lazy_static v1.4.0
Checking xml-rs v0.8.0
Checking error-chain v0.10.0
Checking unicode-width v0.1.8
Checking smawk v0.3.1
Checking bytesize v1.0.0
Compiling quote v1.0.3
Checking atty v0.2.14
Checking terminal_size v0.1.16
Checking colored v1.9.3
Checking textwrap v0.13.4
Compiling serde_derive v1.0.105
Checking serde-xml-rs v0.3.1
Checking cargo-valgrind v2.0.1 (/home/runner/work/cargo-valgrind/cargo-valgrind)
Finished dev [unoptimized + debuginfo] target(s) in 36.22s
If your PR introduced these issues, please try to address them.
Originally posted by @github-actions[bot] in #45 (comment)
The tool version 1.2.0
, cargo valgrind
supported some valgrind flags. This ability was removed in version 2.0.0
, but should be re-introduced in version 2.1.0
(or any other future version).
I imagine passing the arguments via an environment variable like VALGRINDFLAGS
(similar to RUSTFLAGS
for cargo
), as normal CLI flags are not possible (they would be passed to cargo
instead of valgrind
.
Minimal example:
use std::alloc::{Layout, alloc};
fn main() {
unsafe {
let ptr = alloc(Layout::new::<u8>());
if *ptr == 0 { println!("dummy"); }
}
}
Version info:
The problem seems to be that other XML elements (<status>
) appear between <error>
elements.
XML format mismatch between valgrind
and cargo valgrind
: custom: duplicate field error
XML output of valgrind:
<?xml version="1.0"?>
<valgrindoutput>
<protocolversion>4</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<line>Memcheck, a memory error detector</line>
<line>Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.</line>
<line>Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info</line>
<line>Command: target/debug/break-valgrind</line>
</preamble>
<pid>78245</pid>
<ppid>78243</ppid>
<tool>memcheck</tool>
<args>
<vargv>
<exe>/usr/bin/valgrind.bin</exe>
<arg>--xml=yes</arg>
<arg>--xml-socket=127.0.0.1:43083</arg>
</vargv>
<argv>
<exe>target/debug/break-valgrind</exe>
</argv>
</args>
<status>
<state>RUNNING</state>
<time>00:00:00:00.315 </time>
</status>
<error>
<unique>0x0</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x110992</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>break_valgrind::main</fn>
<dir>/home/wastl/break-valgrind/src</dir>
<file>main.rs</file>
<line>7</line>
</frame>
<frame>
<ip>0x1107EA</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/core/src/ops</dir>
<file>function.rs</file>
<line>227</line>
</frame>
<frame>
<ip>0x1106BD</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>123</line>
</frame>
<frame>
<ip>0x110750</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x125ABA</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/core/src/ops</dir>
<file>function.rs</file>
<line>259</line>
</frame>
<frame>
<ip>0x11071F</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x1109EB</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<status>
<state>FINISHED</state>
<time>00:00:00:01.350 </time>
</status>
<error>
<unique>0x1</unique>
<tid>1</tid>
<kind>Leak_DefinitelyLost</kind>
<xwhat>
<text>1 bytes in 1 blocks are definitely lost in loss record 1 of 1</text>
<leakedbytes>1</leakedbytes>
<leakedblocks>1</leakedblocks>
</xwhat>
<stack>
<frame>
<ip>0x483F7B5</ip>
<obj>/usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so</obj>
<fn>malloc</fn>
<dir>./coregrind/m_replacemalloc</dir>
<file>vg_replace_malloc.c</file>
<line>381</line>
</frame>
<frame>
<ip>0x1107AB</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>alloc::alloc::alloc</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/alloc/src</dir>
<file>alloc.rs</file>
<line>87</line>
</frame>
<frame>
<ip>0x110981</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>break_valgrind::main</fn>
<dir>/home/wastl/break-valgrind/src</dir>
<file>main.rs</file>
<line>6</line>
</frame>
<frame>
<ip>0x1107EA</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/core/src/ops</dir>
<file>function.rs</file>
<line>227</line>
</frame>
<frame>
<ip>0x1106BD</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>123</line>
</frame>
<frame>
<ip>0x110750</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x125ABA</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/core/src/ops</dir>
<file>function.rs</file>
<line>259</line>
</frame>
<frame>
<ip>0x11071F</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/db9d1b20bba1968c1ec1fc49616d4742c1725b4b/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x1109EB</ip>
<obj>/home/wastl/break-valgrind/target/debug/break-valgrind</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<errorcounts>
<pair>
<count>1</count>
<unique>0x0</unique>
</pair>
</errorcounts>
<suppcounts>
</suppcounts>
</valgrindoutput>
As noted in this line:
Line 99 in 2da5213
Ctrl+C
). The current behavior is, that the program exits, but the valgrind child-process remains alive and prints to the standard output of the main process.Hi There,
I was working with your nice tool and got a message saying that I should submit an issue. Here you are (huge XML follows).
This is my project/branch https://github.com/cpmech/tritet/tree/issue-with-cargo-valgrind
To reproduce the issue, you may run cargo valgrind run --bin mem_check_build
But I may be doing something wrong! LOL
By the way, there is a double-free issue in my code that I deliberately let happen to verify that Valgrind captures it.
Cheers.
Dorival
cargo-valgrind: version 2.0.3
XML format mismatch between valgrind
and cargo valgrind
: custom: duplicate field stack
XML output of valgrind:
<?xml version="1.0"?>
<valgrindoutput>
<protocolversion>4</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<line>Memcheck, a memory error detector</line>
<line>Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.</line>
<line>Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info</line>
<line>Command: /home/dorival/rust_modules/debug/mem_check_build</line>
</preamble>
<pid>3596</pid>
<ppid>3593</ppid>
<tool>memcheck</tool>
<args>
<vargv>
<exe>/usr/bin/valgrind.bin</exe>
<arg>--xml=yes</arg>
<arg>--xml-socket=127.0.0.1:39543</arg>
</vargv>
<argv>
<exe>/home/dorival/rust_modules/debug/mem_check_build</exe>
</argv>
</args>
<status>
<state>RUNNING</state>
<time>00:00:00:00.104 </time>
</status>
<error>
<unique>0x0</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x13D8AE</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>carveholes</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>13073</line>
</frame>
<frame>
<ip>0x142D94</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>triangulate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>15808</line>
</frame>
<frame>
<ip>0x1112E9</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>217</line>
</frame>
<frame>
<ip>0x110B5B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>161</line>
</frame>
<frame>
<ip>0x11004F</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>14</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<error>
<unique>0x1</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x13D8E2</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>carveholes</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>13073</line>
</frame>
<frame>
<ip>0x142D94</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>triangulate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>15808</line>
</frame>
<frame>
<ip>0x1112E9</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>217</line>
</frame>
<frame>
<ip>0x110B5B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>161</line>
</frame>
<frame>
<ip>0x11004F</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>14</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<error>
<unique>0x2</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x13D91A</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>carveholes</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>13073</line>
</frame>
<frame>
<ip>0x142D94</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>triangulate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>15808</line>
</frame>
<frame>
<ip>0x1112E9</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>217</line>
</frame>
<frame>
<ip>0x110B5B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>161</line>
</frame>
<frame>
<ip>0x11004F</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>14</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<error>
<unique>0x3</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x13D952</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>carveholes</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>13074</line>
</frame>
<frame>
<ip>0x142D94</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>triangulate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>15808</line>
</frame>
<frame>
<ip>0x1112E9</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>217</line>
</frame>
<frame>
<ip>0x110B5B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>161</line>
</frame>
<frame>
<ip>0x11004F</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>14</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<error>
<unique>0x4</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x116DE6</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>counterclockwise</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>5263</line>
</frame>
<frame>
<ip>0x13DA2B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>carveholes</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>13085</line>
</frame>
<frame>
<ip>0x142D94</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>triangulate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>15808</line>
</frame>
<frame>
<ip>0x1112E9</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>217</line>
</frame>
<frame>
<ip>0x110B5B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>161</line>
</frame>
<frame>
<ip>0x11004F</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>14</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<error>
<unique>0x5</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x116E16</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>counterclockwise</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>5269</line>
</frame>
<frame>
<ip>0x13DA2B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>carveholes</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>13085</line>
</frame>
<frame>
<ip>0x142D94</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>triangulate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>15808</line>
</frame>
<frame>
<ip>0x1112E9</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>217</line>
</frame>
<frame>
<ip>0x110B5B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>161</line>
</frame>
<frame>
<ip>0x11004F</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>14</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<error>
<unique>0x6</unique>
<tid>1</tid>
<kind>UninitCondition</kind>
<what>Conditional jump or move depends on uninitialised value(s)</what>
<stack>
<frame>
<ip>0x13DA34</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>carveholes</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>13085</line>
</frame>
<frame>
<ip>0x142D94</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>triangulate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>triangle.c</file>
<line>15808</line>
</frame>
<frame>
<ip>0x1112E9</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>217</line>
</frame>
<frame>
<ip>0x110B5B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::generate</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>161</line>
</frame>
<frame>
<ip>0x11004F</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>14</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<error>
<unique>0x7</unique>
<tid>1</tid>
<kind>InvalidFree</kind>
<what>Invalid free() / delete / delete[] / realloc()</what>
<stack>
<frame>
<ip>0x483CA3F</ip>
<obj>/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so</obj>
<fn>free</fn>
</frame>
<frame>
<ip>0x110F36</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>free_data</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>103</line>
</frame>
<frame>
<ip>0x1111E3</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>drop_triangle</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>181</line>
</frame>
<frame>
<ip>0x11079D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn><tritet::triangle::Triangle as core::ops::drop::Drop>::drop</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>200</line>
</frame>
<frame>
<ip>0x11068A</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ptr::drop_in_place<tritet::triangle::Triangle></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ptr</dir>
<file>mod.rs</file>
<line>487</line>
</frame>
<frame>
<ip>0x1100F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>17</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
<auxwhat>Address 0x4bf70b0 is 0 bytes inside a block of size 32 free'd</auxwhat>
<stack>
<frame>
<ip>0x483CA3F</ip>
<obj>/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so</obj>
<fn>free</fn>
</frame>
<frame>
<ip>0x110F36</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>free_data</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>103</line>
</frame>
<frame>
<ip>0x1111D1</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>drop_triangle</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>180</line>
</frame>
<frame>
<ip>0x11079D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn><tritet::triangle::Triangle as core::ops::drop::Drop>::drop</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>200</line>
</frame>
<frame>
<ip>0x11068A</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ptr::drop_in_place<tritet::triangle::Triangle></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ptr</dir>
<file>mod.rs</file>
<line>487</line>
</frame>
<frame>
<ip>0x1100F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>17</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
<auxwhat>Block was alloc'd at</auxwhat>
<stack>
<frame>
<ip>0x483B7F3</ip>
<obj>/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so</obj>
<fn>malloc</fn>
</frame>
<frame>
<ip>0x1110C0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>new_triangle</fn>
<dir>/home/dorival/01-Code/rust/tritet/c_code</dir>
<file>interface_triangle.h</file>
<line>148</line>
</frame>
<frame>
<ip>0x110894</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>tritet::triangle::Triangle::new</fn>
<dir>/home/dorival/01-Code/rust/tritet/src</dir>
<file>triangle.rs</file>
<line>66</line>
</frame>
<frame>
<ip>0x10FB33</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>mem_check_build::main</fn>
<dir>/home/dorival/01-Code/rust/tritet/src/bin</dir>
<file>mem_check_build.rs</file>
<line>5</line>
</frame>
<frame>
<ip>0x1105FA</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>core::ops::function::FnOnce::call_once</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>248</line>
</frame>
<frame>
<ip>0x11057D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::sys_common::backtrace::__rust_begin_short_backtrace</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src/sys_common</dir>
<file>backtrace.rs</file>
<line>122</line>
</frame>
<frame>
<ip>0x1106F0</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start::{{closure}}</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>145</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>call_once<(), (dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/core/src/ops</dir>
<file>function.rs</file>
<line>280</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<i32, &(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> + core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>{closure#2}</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>do_call<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>492</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>try<isize, std::rt::lang_start_internal::{closure_env#2}></fn>
<dir>library/std/src</dir>
<file>panicking.rs</file>
<line>456</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>catch_unwind<std::rt::lang_start_internal::{closure_env#2}, isize></fn>
<dir>library/std/src</dir>
<file>panic.rs</file>
<line>137</line>
</frame>
<frame>
<ip>0x15520D</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start_internal</fn>
<dir>library/std/src</dir>
<file>rt.rs</file>
<line>128</line>
</frame>
<frame>
<ip>0x1106BF</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>std::rt::lang_start</fn>
<dir>/rustc/99930ac7f8cbb5d9b319b2e2e92794fd6f24f556/library/std/src</dir>
<file>rt.rs</file>
<line>144</line>
</frame>
<frame>
<ip>0x11012B</ip>
<obj>/home/dorival/rust_modules/debug/mem_check_build</obj>
<fn>main</fn>
</frame>
</stack>
</error>
<status>
<state>FINISHED</state>
<time>00:00:00:00.627 </time>
</status>
<errorcounts>
<pair>
<count>1</count>
<unique>0x7</unique>
</pair>
<pair>
<count>1</count>
<unique>0x6</unique>
</pair>
<pair>
<count>1</count>
<unique>0x5</unique>
</pair>
<pair>
<count>1</count>
<unique>0x4</unique>
</pair>
<pair>
<count>1</count>
<unique>0x3</unique>
</pair>
<pair>
<count>1</count>
<unique>0x2</unique>
</pair>
<pair>
<count>1</count>
<unique>0x1</unique>
</pair>
<pair>
<count>1</count>
<unique>0x0</unique>
</pair>
</errorcounts>
<suppcounts>
</suppcounts>
</valgrindoutput>
There are some users reporting errors on "malformed" (i.e. in the sense of: unknown format) input, e.g. #32. Currently (version 2.0.0
) the tool panics:
$ cargo valgrind run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `/home/jfrimmel/.cargo/bin/cargo-valgrind target/debug/ffi-bug`
Test
thread 'main' panicked at 'Cannot parse valgrind output: Error(Custom("missing field `xwhat`"), State { next_error: None })', src/main.rs:69:49
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
This is really unfortunate. This error should be handled gracefully, as it was done in the 1.x
version. But instead of only writing, that there is an error, a more helpful output would be:
$ cargo valgrind run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `/home/jfrimmel/.cargo/bin/cargo-valgrind target/debug/ffi-bug`
Test
Internal error in `cargo valgrind`: encountered an unknown valgrind output.
Below you'll find the output of valgrind. It would be appreciated, if you create a bug-report using this output at
https://github.com/jfrimmel/cargo-valgrind/issues/new
See #59 for reasons, why it is disabled. We need a different way of communicating the issues to the user, even if there are no read permissions.
i introduced a bug to my main.rs (main.txt), and used cargo valgrind run to detect it, but it crashed instead.
Note: I used valgrind in a docker, so it might the issue, idk.
thanks
I have a project which uses rust-bindgen.
It seems like it is not supported by this command somehow.
In any case, panicking does not count as a clear error that indicates what's wrong and how to fix it.
RUST_BACKTRACE=full cargo valgrind
thread 'main' panicked at 'not yet implemented', /home/omer/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-valgrind-1.2.0/src/lib.rs:641:83
stack backtrace:
0: 0x55cdadef1474 - backtrace::backtrace::libunwind::trace::h4dc2f373699fbe93
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/libunwind.rs:88
1: 0x55cdadef1474 - backtrace::backtrace::trace_unsynchronized::h7b04f002610ccc35
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.37/src/backtrace/mod.rs:66
2: 0x55cdadef1474 - std::sys_common::backtrace::_print_fmt::h0238c0a72ffc5be3
at src/libstd/sys_common/backtrace.rs:76
3: 0x55cdadef1474 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h40ab018276d013f4
at src/libstd/sys_common/backtrace.rs:60
4: 0x55cdadf156dc - core::fmt::write::h029a8d927db7b721
at src/libcore/fmt/mod.rs:1030
5: 0x55cdadeed807 - std::io::Write::write_fmt::ha386135dc33cd74f
at src/libstd/io/mod.rs:1412
6: 0x55cdadef3855 - std::sys_common::backtrace::_print::he925af2d0a3180ad
at src/libstd/sys_common/backtrace.rs:64
7: 0x55cdadef3855 - std::sys_common::backtrace::print::ha41b6194bcf8f6ce
at src/libstd/sys_common/backtrace.rs:49
8: 0x55cdadef3855 - std::panicking::default_hook::{{closure}}::h659784bc3ca43626
at src/libstd/panicking.rs:196
9: 0x55cdadef3546 - std::panicking::default_hook::h2f638ec54806c9d8
at src/libstd/panicking.rs:210
10: 0x55cdadef3ef5 - std::panicking::rust_panic_with_hook::h12d7650e86d2fcb0
at src/libstd/panicking.rs:473
11: 0x55cdade67625 - std::panicking::begin_panic::h1bc0c6165771a9ad
12: 0x55cdade4af80 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::h03ba4698face0b56
13: 0x55cdade57107 - <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::next::he09a78cc682c470e
14: 0x55cdade53eb4 - <core::iter::adapters::flatten::FlatMap<I,U,F> as core::iter::traits::iterator::Iterator>::next::h27e593f28491c9f6
15: 0x55cdade56811 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::h36558778d1bacfb3
16: 0x55cdade4a113 - cargo_valgrind::targets::hbd7da8ddd042f593
17: 0x55cdade6b7d8 - cargo_valgrind::run::hb5ac550d958cc5e7
18: 0x55cdade6e3d2 - cargo_valgrind::main::h66226763dd24eedb
19: 0x55cdade50943 - std::rt::lang_start::{{closure}}::h06707b789db1cb0c
20: 0x55cdadef3923 - std::rt::lang_start_internal::{{closure}}::h1e233f1ef686736e
at src/libstd/rt.rs:49
21: 0x55cdadef3923 - std::panicking::try::do_call::h0eae6d7a87b4dd98
at src/libstd/panicking.rs:292
22: 0x55cdadefa66a - __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:80
23: 0x55cdadef43ed - std::panicking::try::h496030de30818333
at src/libstd/panicking.rs:271
24: 0x55cdadef43ed - std::panic::catch_unwind::h9f715533e260dcba
at src/libstd/panic.rs:394
25: 0x55cdadef43ed - std::rt::lang_start_internal::h8832b9e1d5618fb5
at src/libstd/rt.rs:48
26: 0x55cdade6e532 - main
27: 0x7f0571ed8b97 - __libc_start_main
28: 0x55cdade3f16a - _start
29: 0x0 - <unknown
If you have an invalid free, cargo-valgrind
currently exits with an error. This is due to a changed Valgrind XML:
<error>
<unique>...</unique>
<tid>...</tid>
<kind>InvalidFree</kind>
<what>Invalid free() / delete / delete[] / realloc()</what>
<stack>...</stack>
<auxwhat>Address 0x8c2b840 is 0 bytes inside a block of size 16 free'd</auxwhat>
<stack>...</stack>
<auxwhat>Block was alloc'd at</auxwhat>
<stack>...</stack>
</error>
Note the multiple stack fields.
To resolve this error the stack Error
structure has to be changed, so that it provides a vector of Stack
s.
Since the valgrind_xml
module is not public, the change won't not API breaking.
I wonder do you have any plans to support valgrind's callgrind and cachegrind?
I know that there's a cargo-profiler
crate doing this, but the output from their tool doesn't contains enough information for me, I might write a better parser for callgrind and cachegrind output, but I'm more interested in contributing the parser to your tool.
Thanks!
Currently each PR has the following issue, which should be fixed:
cargo clippy
Checking cargo-valgrind v2.0.2 (/home/runner/work/cargo-valgrind/cargo-valgrind)
warning: consider adding a `;` to the last statement for consistent formatting
--> src/panic.rs:76:13
|
76 | old_hook(panic)
| ^^^^^^^^^^^^^^^ help: add a `;` here: `old_hook(panic);`
|
note: the lint level is defined here
--> src/main.rs:9:5
|
9 | clippy::pedantic,
| ^^^^^^^^^^^^^^^^
= note: `#[warn(clippy::semicolon_if_nothing_returned)]` implied by `#[warn(clippy::pedantic)]`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
warning: this `impl` can be derived
--> src/valgrind/xml/mod.rs:156:1
|
156 | / impl Default for Resources {
157 | | fn default() -> Self {
158 | | Resources {
159 | | bytes: 0,
... |
162 | | }
163 | | }
| |_^
|
note: the lint level is defined here
--> src/main.rs:6:5
|
6 | clippy::complexity,
| ^^^^^^^^^^^^^^^^^^
= note: `#[warn(clippy::derivable_impls)]` implied by `#[warn(clippy::complexity)]`
= help: try annotating `valgrind::xml::Resources` with `#[derive(Default)]`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls
warning: unnecessary structure name repetition
--> src/valgrind/xml/mod.rs:158:9
|
158 | Resources {
| ^^^^^^^^^ help: use the applicable keyword: `Self`
|
note: the lint level is defined here
--> src/main.rs:8:5
|
8 | clippy::nursery,
| ^^^^^^^^^^^^^^^
= note: `#[warn(clippy::use_self)]` implied by `#[warn(clippy::nursery)]`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#use_self
warning: length comparison to zero
--> src/valgrind/mod.rs:87:24
|
87 | if new_err.len() > 0 {
| ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!new_err.is_empty()`
|
note: the lint level is defined here
--> src/main.rs:7:5
|
7 | clippy::style,
| ^^^^^^^^^^^^^
= note: `#[warn(clippy::len_zero)]` implied by `#[warn(clippy::style)]`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
warning: consider adding a `;` to the last statement for consistent formatting
--> src/valgrind/mod.rs:88:25
|
88 | output.errors = Some(new_err)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `output.errors = Some(new_err);`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
warning: consider adding a `;` to the last statement for consistent formatting
--> src/valgrind/mod.rs:90:25
|
90 | output.errors = None
| ^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `output.errors = None;`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
warning: `cargo-valgrind` (bin "cargo-valgrind") generated 6 warnings
Finished dev [unoptimized + debuginfo] target(s) in 1m 10s
If your PR introduced these issues, please try to address them.
Originally posted by @github-actions[bot] in #50 (comment)
Hello,
I'm trying to use this crate but it give me this error:
thread '<unnamed>' panicked at 'failed to allocate a guard page', src/libstd/sys/unix/thread.rs:336:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
fatal runtime error: failed to initiate panic, error 94375168
error: valgrind command failed
I'm using:
Reporting this here, since cargo-valgrind asked me nicely to do so.
Project: https://github.com/barafael/crisp/tree/cargo-valgrind-bug. There is a note in main.rs
with a possibly related call to free
.
Gist of trace (because it's too long for GitHub issue): https://gist.github.com/barafael/8360ad9aa31fc747fd53568be2bb35cc
cargo-valgrind-bug
cargo valgrind run
* 1 2
CTRL-C
If the program under test produces a stack overflow, the following output is printed:
Finished dev [unoptimized + debuginfo] target(s) in 0.24s
Analyzing `target/debug/huge_box`
==5113== If you believe this happened as a result of a stack
==5113== overflow in your program's main thread (unlikely but
==5113== possible), you can try to increase the size of the
==5113== main thread stack using the --main-stacksize= flag.
==5113== The main thread stack size used in this run was 8388608.
==5113== If you believe this happened as a result of a stack
==5113== overflow in your program's main thread (unlikely but
==5113== possible), you can try to increase the size of the
==5113== main thread stack using the --main-stacksize= flag.
==5113== The main thread stack size used in this run was 8388608.
error: valgrind command failed
Note, that the normal valgrind output is interleaved with the cargo-valgrind
output. This should not happen. Even if valgrind
fails, its error messages should be parsed and dispalyed in the custom style.
Investigating of how to suppress the valgrind stack overflow error is required.
Currently, there are multiple ways to provoke a panic inside cargo-valgrind
, e.g. #38. Instead of the normal Rust panic message, a custom hook should be set via std::panic::set_hook
. This custom panic message should include
I have some tests which require sudo
to run.
When running with sudo
you lose the path of your current user (which is expected).
I installed valgrind using linuxbrew so it shouldn't be on the standard path.
Instead of a clear error message indicating that valgrind cannot be found
or similar all we get is error: No such file or directory (os error 2)
.
This requires the user to guess what went wrong.
The 1.3.0 tag is not available on the repository. Could someone push it?
Instead of running my unit tests, I have to manually put them into ./examples to run.
Currently cargo valgrind
panics, if there is an integration test present in the crate under test. This should be supported.
Originally posted by @thedrow in #21 (comment)
Similar to the cargo run
command, the use should be able to pass flags for the binary under test after the --
separator.
Thank you for an excellent tool!
As I was running this on our integration tests I experienced a crash with the following message:
cargo-valgrind: version 2.0.3
XML format mismatch between `valgrind` and `cargo valgrind`: custom: duplicate field `stack`
XML output of valgrind:
```xml
<?xml version="1.0"?>
<valgrindoutput>
<protocolversion>4</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<line>Memcheck, a memory error detector</line>
<line>Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.</line>
<line>Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info</line>
<line>Command: /home/hepper/workspace/rust-tss-esapi/target/debug/deps/integration_tests-2d5723b6547f6cbb --test-threads=1 --nocapture</line>
</preamble>
<pid>9946</pid>
<ppid>9945</ppid>
<tool>memcheck</tool>
<args>
<vargv>
<exe>/usr/bin/valgrind.bin</exe>
<arg>--xml=yes</arg>
<arg>--xml-socket=127.0.0.1:41415</arg>
</vargv>
<argv>
<exe>/home/hepper/workspace/rust-tss-esapi/target/debug/deps/integration_tests-2d5723b6547f6cbb</exe>
<arg>--test-threads=1</arg>
<arg>--nocapture</arg>
</argv>
</args>
<status>
<state>RUNNING</state>
<time>00:00:00:01.897 </time>
</status>
cargo valgrind -- --args
does not work as it does for cargo run
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.