[valgrind] [Bug 465465] Eviction Emulation in Cachegrind for Detecting Cache Conflicts

2023-08-28 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=465465

--- Comment #15 from Nick Nethercote  ---
The existing cache and branch simulations are very simplistic, and about 20
years out of date. I think hardware counters are a much better way of getting
cache statistics. I recently made `--cache-sim=no` the default for this reason.

I understand that the statistics you've added aren't available via hardware
counters. But still I worry that using an unrealistic simulation as the
foundation could lead to inaccurate results.

Another thing: in the example output file you have lines like these:

> 4,496,605,023 (51.80%) 47,791,341,277 (5545.9%) 127,816 (2819.7%) 147,917 
> (23112.0%) 73,046 (1014.2%) 154,413 (203.7%)   8,192 (51.35%)  
> binary_search_test


The percentages in the all the new columns (everything other than `Ir`) greatly
exceed 100%, which seems wrong.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 469146] massif --ignore-fn does not ignore inlined functions

2023-05-05 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=469146

--- Comment #17 from Nick Nethercote  ---
It has been a long time since I looked at this code. I don't have much to add
other than the changes seem plausible

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 467472] Rewrite `cg_annotate` in Python

2023-03-21 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=467472

Nick Nethercote  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|REPORTED|RESOLVED

--- Comment #4 from Nick Nethercote  ---
I just merged a slightly improved version of the attached patch:
https://sourceware.org/git/?p=valgrind.git;a=commit;h=4650b7949ae3a41326e52ae454a9202493c41444

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 467472] Rewrite `cg_annotate` in Python

2023-03-16 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=467472

--- Comment #3 from Nick Nethercote  ---
Created attachment 157350
  --> https://bugs.kde.org/attachment.cgi?id=157350&action=edit
New cg_annotate.in file

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 467472] Rewrite `cg_annotate` in Python

2023-03-16 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=467472

--- Comment #2 from Nick Nethercote  ---
Created attachment 157349
  --> https://bugs.kde.org/attachment.cgi?id=157349&action=edit
Patch minus cg_annotate.in changes (easier to read)

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 467472] Rewrite `cg_annotate` in Python

2023-03-16 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=467472

--- Comment #1 from Nick Nethercote  ---
Created attachment 157348
  --> https://bugs.kde.org/attachment.cgi?id=157348&action=edit
Patch

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 467472] New: Rewrite `cg_annotate` in Python

2023-03-16 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=467472

Bug ID: 467472
   Summary: Rewrite `cg_annotate` in Python
Classification: Developer tools
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: cachegrind
  Assignee: n...@valgrind.org
  Reporter: n.netherc...@gmail.com
  Target Milestone: ---

Perl was a reasonable choice for `cg_annotate` in 2002, but not in 2023.
Also, the existing structure of the code is not good. These two things
make it hard to modify `cg_annotate` in any significant way.

Benefits of the change:
- Now written in a language that is (a) nice, and (b) not moribund.
- Easier to maintain, due to (a) abovementioned better language, (b)
  better code structure, and (c) better language tooling, such as
  formatters, type checkers, and linters.
- The new version is a little shorter.
- It runs about 2x faster.
- Argument handling is more standard. E.g. things like `--context 2`,
  `--auto`, `--no-auto` are supported. (The old forms that require `=`
  are still supported, though the `=yes`/`=no` forms are deprecated.)

The behaviour and output of the new version is identical for typical
uses, but there are some very minor changes for edge cases, which nobody
is likely to notice. For example:
- The file format is slightly changed: I removed support for '.'
  counts, which had the same meaning as '0'. This was a feature that
  Cachegrind never used, and the old script handled it inconsistently.
- The new version will abort on a malformed data line. The old version
  would just print a warning and continue.

The commit also adds a new test `ann3` that tests many parts of
`cg_annotate` that weren't tested previously, and tweaks the existing
`ann2` test.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 452758] Valgrind does not read properly DWARF5 as generated by Clang14

2022-06-14 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=452758

--- Comment #47 from Nick Nethercote  ---
My test Rust program was this, in `a.rs`:

> fn main() {
> println!("hello world");
> }

And I compiled with `rustc +nightly a.rs` to produce the executable `a`.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 452758] Valgrind does not read properly DWARF5 as generated by Clang14

2022-06-14 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=452758

--- Comment #46 from Nick Nethercote  ---
> Could you test again with top of tree and see whether --read-var-info=yes
> also works OK?

My normal workflow works well. It uses Cachegrind and DHAT, which don't need
`--read-var-info=yes`.

I also tested Memcheck on a trivial Rust program and `--read-var-info=yes` had
problems:

> ==19085== Memcheck, a memory error detector
> ==19085== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
> ==19085== Using Valgrind-3.20.0.GIT and LibVEX; rerun with -h for copyright 
> info
> ==19085== Command: ./a
> ==19085==
>
> parse DIE(readdwarf3.c:3994): confused by:
>  <0>: Abbrev Number: 1 (DW_TAG_compile_unit)
>  DW_AT_producer: (indirect string, offset: 0x0): clang LLVM (rustc 
> version 1.63.0-nightly (420c970cb 2022-06-09))
>  DW_AT_language: 28
>  DW_AT_name: (indirect string, offset: 0x41): 
> library/std/src/lib.rs/@/std.85a61a41-cgu.0
>  DW_AT_stmt_list   : 0
>  DW_AT_comp_dir: (indirect string, offset: 0x6d): 
> /rustc/420c970cb1edccbf60ff2aeb51ca01e2300b09ef
>  DW_AT_GNU_pubnames: 1
>  DW_AT_low_pc  : 0x0
>  DW_AT_ranges  : 322832
> parse_type_DIE:
> --19085-- WARNING: Serious error when reading debug info
> --19085-- When reading debug info from /home/njn/dev/rustc-perf/a:
> --19085-- confused by the above DIE
> hello world
> ==19085==
> ==19085== HEAP SUMMARY:
> ==19085== in use at exit: 0 bytes in 0 blocks
> ==19085==   total heap usage: 11 allocs, 11 frees, 3,181 bytes allocated
> ==19085==
> ==19085== All heap blocks were freed -- no leaks are possible
> ==19085==
> ==19085== For lists of detected and suppressed errors, rerun with: -s
> ==19085== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 452758] Valgrind does not read properly DWARF5 as generated by Clang14

2022-06-13 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=452758

--- Comment #35 from Nick Nethercote  ---
With the additional commits things are working again for Rust code, thanks!

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 452758] Valgrind does not read properly DWARF5 as generated by Clang14

2022-06-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=452758

--- Comment #25 from Nick Nethercote  ---
(In reply to Nick Nethercote from comment #23)
> FYI: several people are experiencing this when running Valgrind on code
> compiled with the current nightly Rust compiler.

Unfortunately, this is still happening. E.g if you have an up-to-date rustc
(e.g. updated via `rustup` with `rustup update nightly`).

> [gulf:~/dev/rustc-perf] vg1 --trace-children=yes rustc +nightly --version
> ==787430== Memcheck, a memory error detector
> ==787430== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
> ==787430== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
> ==787430== Command: 
> /home/njn/.rustup/toolchains/532be942ddf8f40d086e54d157453434b16e9647/bin/rustc
> ==787430==
> ### unhandled dwarf2 abbrev form code 0x25
> ### unhandled dwarf2 abbrev form code 0x25
> ### unhandled dwarf2 abbrev form code 0x25
> ### unhandled dwarf2 abbrev form code 0x23
> ### unhandled dwarf2 abbrev form code 0x25
> ### unhandled dwarf2 abbrev form code 0x25
> ### unhandled dwarf2 abbrev form code 0x25
> ### unhandled dwarf2 abbrev form code 0x23
> ==787430== Valgrind: debuginfo reader: ensure_valid failed:
> ==787430== Valgrind:   during call to ML_(img_get)
> ==787430== Valgrind:   request for range [1903633023, +4) exceeds
> ==787430== Valgrind:   valid image size of 1932688 for image:
> ==787430== Valgrind:   
> "/home/njn/.rustup/toolchains/532be942ddf8f40d086e54d157453434b16e9647/bin/rustc"
> ==787430==
> ==787430== Valgrind: debuginfo reader: Possibly corrupted debuginfo file.
> ==787430== Valgrind: I can't recover.  Giving up.  Sorry.
> ==787430==

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 452758] Valgrind does not read properly DWARF5 as generated by Clang14

2022-05-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=452758

Nick Nethercote  changed:

   What|Removed |Added

 CC||n.netherc...@gmail.com

--- Comment #23 from Nick Nethercote  ---
FYI: several people are experiencing this when running Valgrind on code
compiled with the current nightly Rust compiler.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 452058] Generated suppressions contain a mix of mangled (physical) and demangled (inline) frames

2022-04-11 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=452058

--- Comment #4 from Nick Nethercote  ---
> Does this depend on the rustc version used? 

I tried a few versions: 1.57.0, 1.60.0, nightly 1.62, they all behaved the same
on my Ubuntu 21.10 box.

It looks to me like you're not getting any inline frames in your stack trace.
This could happen if you're using a Valgrind prior to the fix for bug 445668,
maybe?

Anyway, your diagnosis of the underlying problem sounds entirely correct to me.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 452058] New: Generated suppressions contain a mix of mangled (physical) and demangled (inline) frames

2022-03-29 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=452058

Bug ID: 452058
   Summary: Generated suppressions contain a mix of mangled
(physical) and demangled (inline) frames
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: general
  Assignee: jsew...@acm.org
  Reporter: n.netherc...@gmail.com
  Target Milestone: ---

Put this Rust program in `a.rs`:

use std::io::{stdin, Read};
fn main() {
let mut buf = vec![];

if let Err(e) = stdin().read(&mut buf) {
println!("{}", e)
}
}

Then build it with: rustc a.rs

Then run: valgrind --leak-check=full --show-leak-kinds=all
--gen-suppressions=all ./a

Then hit enter, to provide the running program with necessary input.

On termination, Memcheck prints two suppressions. Here's the first one, which
is enough to show the problem:

{
   
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc
   fun:alloc
   fun:alloc_impl
   fun:allocate
   fun:exchange_malloc
   fun:new
   fun:from
   fun:_ZN3std10sys_common5mutex12MovableMutex3new17h4e64539bf4ba99a6E
   fun:new>
   fun:{closure#0}
  
fun:{closure#0}>,
std::io::stdio::stdin::{closure#0}>
  
fun:{closure#0}>,
std::lazy::{impl#10}::get_or_init::{closure#0}, !>
  
fun:_ZN3std4sync4once4Once15call_once_force28_$u7b$$u7b$closure$u7d$$u7d$17ha9375aeb05e4aae3E
   fun:_ZN3std4sync4once4Once10call_inner17hb3a655ef2ff7c156E
   fun:call_once_force
   fun:_ZN3std4lazy21SyncOnceCell$LT$T$GT$10initialize17h3a3ef5fbb9e2970eE
  
fun:get_or_try_init>,
std::lazy::{impl#10}::get_or_init::{closure#0}, !>
  
fun:get_or_init>,
std::io::stdio::stdin::{closure#0}>
   fun:_ZN3std2io5stdio5stdin17h94821c2f5cbdd619E
   fun:_ZN1a4main17h8bbda9164eb1d7fdE
   fun:_ZN4core3ops8function6FnOnce9call_once17hb0b8acf7ed5a9c1fE
  
fun:_ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17hedc3d4705fc28138E
   fun:_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h478bd93d3dae3c53E
   fun:call_once<(), (dyn core::ops::function::Fn<(), Output=i32> +
core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)>
   fun:do_call<&(dyn core::ops::function::Fn<(), Output=i32> +
core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32>
   fun:try +
core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe)>
   fun:catch_unwind<&(dyn core::ops::function::Fn<(), Output=i32> +
core::marker::Sync + core::panic::unwind_safe::RefUnwindSafe), i32>
   fun:{closure#2}
   fun:do_call
   fun:try
   fun:catch_unwind
   fun:_ZN3std2rt19lang_start_internal17hd15a47be08101c28E
   fun:_ZN3std2rt10lang_start17h99d3162981a37fa3E
}

Suppressions are supposed to use *mangled* function names, but this has a mix
of mangled and demangled names. I did some digging and discovered that physical
stack frames are correctly showing as mangled, but inline stack frames are
incorrectly showing as demangled.

The Rust compiler tends to inline aggressively. This bug makes it very hard to
write suppressions, because frames that might be inlined one day might be
non-inlined later on after making moderate changes to a program.

This bug is preventing me from adding a useful suppression for the Rust
standard library. See https://github.com/rust-lang/rust/issues/80406 for
details.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445916] Demangle Rust v0 symbols with .llvm suffix

2021-11-23 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445916

--- Comment #2 from Nick Nethercote  ---
https://github.com/rust-lang/rust/issues/60705#issuecomment-976064467 suggests
that we should only cut off what comes after '.', *not* '$'.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445916] Demangle Rust v0 symbols with .llvm suffix

2021-11-22 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445916

Nick Nethercote  changed:

   What|Removed |Added

 CC||n.netherc...@gmail.com

--- Comment #1 from Nick Nethercote  ---
I agree that cutting off after `.` or `$` is fine for Rust v0 symbols. I
personally never find that suffix useful.

AFAIK Valgrind uses the libiberty demangler. How does that work? Is there scope
for a Valgrind-specific fix, or would it be better to get the suffix trimmed in
libiberty and then import updated code into Valgrind?

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445668] Inline stack frame generation is broken for Rust binaries

2021-11-21 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445668

--- Comment #8 from Nick Nethercote  ---
> The Rust compiler currently sometimes generates symbols with a
> `.llvm.` suffix. These violate the v0 spec, which doesn't allow '.'
> chars, and the libiberty/Valgrind demangler doesn't demangle them. It's a
> problem that needs to be fixed on the Rust side.

Going back to this (and I know it's a tangent), there's now some disagreement
about whether this needs to be fixed on the Rust side, or the
libiberty/Valgrind side:
https://github.com/rust-lang/rust/issues/60705#issuecomment-974011409  :(

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445668] Inline stack frame generation is broken for Rust binaries

2021-11-21 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445668

--- Comment #7 from Nick Nethercote  ---
The one-line fix works on the big example! Thank you.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445668] Inline stack frame generation is broken for Rust binaries

2021-11-18 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445668

--- Comment #4 from Nick Nethercote  ---
Created attachment 143715
  --> https://bugs.kde.org/attachment.cgi?id=143715&action=edit
Compiled file

Here's the binary produced by Rust 1.56.1 for `rustc -g a.rs` on my x86-64
Linux box.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445668] Inline stack frame generation is broken for Rust binaries

2021-11-18 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445668

--- Comment #3 from Nick Nethercote  ---
Created attachment 143713
  --> https://bugs.kde.org/attachment.cgi?id=143713&action=edit
Rust reproducer

I've written a tiny program that reproduces the problem.
- I compiled with Rust 1.56.1 with `rustc -g a.rs`.
- I ran DHAT with `vg-in-place --tool=dhat --dhat-out-file=dhout ./a`.
- I viewed `dhout` with `dh_view.html`.

Trunk Valgrind has a first PP like this:
```
  │   #1: 0x1123BB: alloc::alloc::alloc (alloc.rs:86)
  │   #2: 0x112446: alloc::alloc::Global::alloc_impl (alloc.rs:166)
  │   #3: 0x112B29: ::allocate (alloc.rs:226)
  │   #4: 0x110991: alloc::raw_vec::finish_grow (raw_vec.rs:510)
  │   #5: 0x110E85: alloc::raw_vec::RawVec::grow_amortized
(raw_vec.rs:443)
  │   #6: 0x111045:
alloc::raw_vec::RawVec::reserve::do_reserve_and_handle (raw_vec.rs:334)
  │   #7: 0x11101B: alloc::raw_vec::RawVec::reserve (raw_vec.rs:338)
  │   #8: 0x1135DF: alloc::vec::Vec::reserve (mod.rs:805)
  │   #9: 0x1139AF: a::main (a.rs:5)
  │   #10: 0x11206A: core::ops::function::FnOnce::call_once
(function.rs:227)
  │   #11: 0x111F5D:
std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:125)
```
With the abovementioned commit reverted, the first PP looks like this:
```
  │   #1: 0x1123BB: alloc::alloc::alloc (alloc.rs:86)
  │   #2: 0x112446: alloc::alloc::Global::alloc_impl (alloc.rs:166)
  │   #3: 0x112B29: ::allocate (alloc.rs:226)
  │   #4: 0x110991: alloc::raw_vec::finish_grow (raw_vec.rs:510)
  │   #5: 0x110E85: alloc::raw_vec::RawVec::grow_amortized
(raw_vec.rs:443)
  │   #6: 0x111045:
alloc::raw_vec::RawVec::reserve::do_reserve_and_handle (raw_vec.rs:334)
  │   #7: 0x11101B: alloc::raw_vec::RawVec::reserve (raw_vec.rs:338)
  │   #8: 0x1135DF: alloc::vec::Vec::reserve (mod.rs:805)
  │   #9: 0x1139AF: f4 (a.rs:5)
  │   #10: 0x1139AF: f3 (a.rs:12)
  │   #11: 0x1139AF: f2 (a.rs:17)
  │   #12: 0x1139AF: f1 (a.rs:22)
  │   #13: 0x1139AF: a::main (a.rs:26)
  │   #14: 0x11206A: core::ops::function::FnOnce::call_once
(function.rs:227)
  │   #15: 0x111F5D:
std::sys_common::backtrace::__rust_begin_short_backtrace (backtrace.rs:125)

```

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445668] Inline stack frame generation is broken for Rust binaries

2021-11-18 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445668

--- Comment #2 from Nick Nethercote  ---
> (*) BTW. What is this? It looks like a mangled Rust v0 symbol, but it isn't 
> because it (I also checked with c++filt) cannot be demangled.

The Rust compiler currently sometimes generates symbols with a
`.llvm.` suffix. These violate the v0 spec, which doesn't allow '.'
chars, and the libiberty/Valgrind demangler doesn't demangle them. It's a
problem that needs to be fixed on the Rust side.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445668] Inline stack frame generation is broken for Rust binaries

2021-11-17 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445668

Nick Nethercote  changed:

   What|Removed |Added

 CC||m...@klomp.org

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445668] New: Inline stack frame generation is broken for Rust binaries

2021-11-17 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445668

Bug ID: 445668
   Summary: Inline stack frame generation is broken for Rust
binaries
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: general
  Assignee: jsew...@acm.org
  Reporter: n.netherc...@gmail.com
  Target Milestone: ---

Here is some DHAT output I am getting with Rust code:

> └── PP 1.14/14 {
>   Total: 118,312 bytes (0.05%, 60.74/Minstr) in 11,864 blocks (1.12%, 
> 6.09/Minstr), avg size 9.97 bytes, avg lifetime 60,918.19 instrs (0% of 
> program duration)
>   Max:   40 bytes in 5 blocks, avg size 8 bytes
>   At t-gmax: 0 bytes (0%) in 0 blocks (0%), avg size 0 bytes
>   At t-end:  0 bytes (0%) in 0 blocks (0%), avg size 0 bytes
>   Reads: 178,976 bytes (0.03%, 91.89/Minstr), 1.51/byte
>   Writes:130,464 bytes (0.05%, 66.98/Minstr), 1.1/byte
>   Allocated at {
> #1: 0xA2D0172: 
> _RNvMs0_NtCs5l0EXMQXRMU_21rustc_data_structures17obligation_forestINtB5_16ObligationForestNtNtNtCsdozMG8X9FIu_21rustc_trait_selection6traits7fulfill26PendingPredicateObligationE22register_obligation_atB1v_.llvm.8517020237817239694
>  (alloc.rs:87)
> #2: 0xA2C42B2: 
> _RINvMs0_NtCs5l0EXMQXRMU_21rustc_data_structures17obligation_forestINtB6_16ObligationForestNtNtNtCsdozMG8X9FIu_21rustc_trait_selection6traits7fulfill26PendingPredicateObligationE19process_obligationsNtB1s_16FulfillProcessorINtB6_7OutcomeB1q_NtNtCsgI90OQiJWEs_11rustc_infer6traits20FulfillmentErrorCodeEEB1w_
>  (mod.rs:459)
> #3: 0xA27EA42: 
> _RNvMs_NtNtCsdozMG8X9FIu_21rustc_trait_selection6traits7fulfillNtB4_18FulfillmentContext6select.llvm.5302840341462405287
>  (fulfill.rs:140)
>   }
> }

Here's what it should look like:

>└── PP 1.14/14 {
>   Total: 118,312 bytes (0.05%, 60.81/Minstr) in 11,864 blocks (1.12%, 
> 6.1/Minstr), avg size 9.97 bytes, avg lifetime 60,857.47 instrs (0% of 
> program duration)
>   Max:   40 bytes in 5 blocks, avg size 8 bytes
>   At t-gmax: 0 bytes (0%) in 0 blocks (0%), avg size 0 bytes
>   At t-end:  0 bytes (0%) in 0 blocks (0%), avg size 0 bytes
>   Reads: 178,976 bytes (0.03%, 91.99/Minstr), 1.51/byte
>   Writes:130,464 bytes (0.05%, 67.05/Minstr), 1.1/byte
>   Allocated at {
> #1: 0xA2CD172: alloc (alloc.rs:87)
> #2: 0xA2CD172: alloc_impl (alloc.rs:169)
> #3: 0xA2CD172: allocate (alloc.rs:229)
> #4: 0xA2CD172: exchange_malloc (alloc.rs:318)
> #5: 0xA2CD172: 
> new 
> (mod.rs:192)
> #6: 0xA2CD172: 
> _RNvMs0_NtCs5l0EXMQXRMU_21rustc_data_structures17obligation_forestINtB5_16ObligationForestNtNtNtCsdozMG8X9FIu_21rustc_trait_selection6traits7fulfill26PendingPredicateObligationE22register_obligation_atB1v_.llvm.8517020237817239694
>  (mod.rs:376)
> #7: 0xA2C12B2: 
> _RINvMs0_NtCs5l0EXMQXRMU_21rustc_data_structures17obligation_forestINtB6_16ObligationForestNtNtNtCsdozMG8X9FIu_21rustc_trait_selection6traits7fulfill26PendingPredicateObligationE19process_obligationsNtB1s_16FulfillProcessorINtB6_7OutcomeB1q_NtNtCsgI90OQiJWEs_11rustc_infer6traits20FulfillmentErrorCodeEEB1w_
>  (mod.rs:459)
> #8: 0xA27BA42: 
> _RNvMs_NtNtCsdozMG8X9FIu_21rustc_trait_selection6traits7fulfillNtB4_18FulfillmentContext6select.llvm.5302840341462405287
>  (fulfill.rs:140)
>   }
> }

I bisected the problem to this commit:

commit 75e3ef0f3b834f75f49333d35b5a040060247b03
Author: Mark Wielaard 
Date:   Thu Sep 16 22:01:47 2021 +0200

readdwarf3: Skip units without addresses when looking for inlined functions

When a unit doesn't cover any addresses skip it because no actual code
will be inside. Also use skip_DIE instead of read_DIE when not parsing
(skipping) children.

Reverting this commit fixed the problem, though the reversion was a bit messy
because some things have changed since.

Mark, I don't understand much about dwarf3. Any idea what might be wrong? I was
profiling the Rust compiler which is very large and complicated. If necessary,
I could try to create a smaller Rust program that reproduces the error.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445184] Rust v0 symbol demangling is broken

2021-11-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445184

Nick Nethercote  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|REPORTED|RESOLVED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445235] Java/Ada/D demangling is probably broken

2021-11-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445235
Bug 445235 depends on bug 445184, which changed state.

Bug 445184 Summary: Rust v0 symbol demangling is broken
https://bugs.kde.org/show_bug.cgi?id=445184

   What|Removed |Added

 Status|REPORTED|RESOLVED
 Resolution|--- |FIXED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445184] Rust v0 symbol demangling is broken

2021-11-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445184

--- Comment #4 from Nick Nethercote  ---
I filed #445235 for Java/Ada/D.

Pushed as:

commit 4831385c6706b377851284adc4c4545fff4c6564 (HEAD -> master, origin/master,
origin/HEAD)
Author: Nicholas Nethercote 
Date:   Tue Nov 9 12:30:07 2021 +1100

Fix Rust v0 demangling.

It's currently broken due to a silly test that prevents the v0
demangling code from even running.

The commit also adds a test, to avoid such problems in the future.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445235] New: Java/Ada/D demangling is probably broken

2021-11-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445235

Bug ID: 445235
   Summary: Java/Ada/D demangling is probably broken
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: general
  Assignee: jsew...@acm.org
  Reporter: n.netherc...@gmail.com
CC: jsew...@acm.org, m...@klomp.org,
philippe.waroqui...@skynet.be
Depends on: 445184
  Target Milestone: ---

+++ This bug was initially created as a clone of Bug #445184 +++

Valgrind has code to demangle symbols for: C++, Rust, Java, Ada, and D. But the
Java/Ada/D demangling is probably broken because the code is unreachable.

`VG_(demangle)` has an initial test that requires that the first two chars be
"_Z" or "_R", which excludes a bunch of cases. Also, the code in
`ML_(cplus_demangle)` that calls the demanglers for Java/Ada/D is a bit
different to that for C++ and Rust (in the way the `*_DEMANGLING` constants are
used), which may also be a problem.

>From a quick look at the code, I think the following is true.
- C++ symbols usually start with "_Z", but "_GLOBAL_" is also possible, which
won't work.
- Rust symbols start with "_Z" or "_R".
- Java symbols are a subset of C++ symbols, so should be ok, modulo possible
"_GLOBAL_" cases, and possible AUTO_DEMANGLING problems.
- D symbols start with "_D", and so will be broken.
- Ada symbols can start with "_ada_", or with a lower-case letter, and so will
be broken.


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=445184
[Bug 445184] Rust v0 symbol demangling is broken
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445184] Rust v0 symbol demangling is broken

2021-11-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445184

Nick Nethercote  changed:

   What|Removed |Added

 Blocks||445235


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=445235
[Bug 445235] Java/Ada/D demangling is probably broken
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445184] Rust v0 symbol demangling is broken

2021-11-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445184

--- Comment #3 from Nick Nethercote  ---
> What about the Java Ada/gnat and D demangling defined in ML_(cplus_demangle)?
> We seem to miss demangling them too because they (probably) don't start with
> _Z or _R and aren't guarded by AUTO_DEMANGLING.
> Has that also always been broken? Did we simple not notice because nobody
> uses valgrind with those languages?

>From a quick look at the code, I think the following is true.
- C++ symbols usually start with "_Z", but "_GLOBAL_" is also possible, which
won't work.
- Java symbols are a subset of C++ symbols, so should be ok, modulo possible
"_GLOBAL_" cases, and possible AUTO_DEMANGLING problems.
- D symbols start with "_D", and so will be broken.
- Ada symbols can start with "_ada_", or with a lower-case letter, and so will
be broken.

I found the AUTO_DEMANGLING stuff a bit confusing, but you are right that the
code for Rust and C++ looks a bit different to the code for Java/Ada/D, in that
respect. I suspect that you are also right about Java/Ada/D demangling being
broken but nobody noticing due to low levels of usage.

Fixing the Java/Ada/D problems is outside the scope of this bug, and I'm not
familiar enough with those languages to fix and test things anyway.
Here's what I'll do: I'll file a new bug pointing out the problems, update my
commit to include a comment in `VG_(demangle)` that points to the bug, and then
push. That way the Rust problems will be fixed, and the Java/Ada/D problems at
least will be documented.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445184] Rust v0 symbol demangling is broken

2021-11-08 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445184

--- Comment #1 from Nick Nethercote  ---
I have push permission for the repository, so once people are happy with this
(assuming they are) I can push it myself. Thanks!

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 445184] New: Rust v0 symbol demangling is broken

2021-11-08 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=445184

Bug ID: 445184
   Summary: Rust v0 symbol demangling is broken
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: general
  Assignee: jsew...@acm.org
  Reporter: n.netherc...@gmail.com
  Target Milestone: ---

Created attachment 143357
  --> https://bugs.kde.org/attachment.cgi?id=143357&action=edit
Fix Rust v0 demangling.

Rust has an old symbol mangling scheme ("legacy") and a new scheme ("v0"). The
tracking issue for switching to the new scheme is at
https://github.com/rust-lang/rust/issues/60705.

Valgrind has supported the legacy scheme for a long time. Bug #431306 added
code to support the v0 scheme, which was released in 3.18. Unfortunately, due
to an erroneous condition in the outer layer of the demangling code, the v0
demangling code is never reached. C++ and legacy symbols start with "_Z", but
v0 symbols start with "_R", and this erroneous condition only checks for the
former.

It's possible that this wasn't noticed because the Rust compiler is still using
legacy mangling; you need to run with `-Z symbol-mangling-version=v0` to enable
v0 mangling.

The attachment fixes the problem and adds a test. I have confirmed that the
test fails without the fix -- because the one legacy symbol is demangled
correctly, but the two v0 symbols are not. I have also confirmed the validity
of the fix by doing large scale profiling of the Rust compiler, which is using
v0 symbols internally.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 409678] improvement suggestion for dhat

2019-07-11 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=409678

--- Comment #5 from Nick Nethercote  ---
FWIW, you can run some tests of DHAT's viewer by loading dhat with `?test=1`
appended to the URL.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 406578] More general Access Counts

2019-04-17 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=406578

--- Comment #1 from Nick Nethercote  ---
Valgrind 3.15 just came out and it completely overhauled DHAT. The new version
is much better.

The output is now in a tree. The root node of the tree covers the entire
program, and looks like this:

> AP 1/1 (25 children) {
>   Total: 1,355,253,987 bytes (100%, 67,454.81/Minstr) in 5,943,417 blocks 
> (100%, 295.82/Minstr), avg size 228.03 bytes, avg lifetime 3,134,692,250.67 
> instrs (15.6% of program duration)
>   At t-gmax: 423,930,307 bytes (100%) in 1,575,682 blocks (100%), avg size 
> 269.05 bytes
>   At t-end:  258,002 bytes (100%) in 2,129 blocks (100%), avg size 121.18 
> bytes
>   Reads: 5,478,606,988 bytes (100%, 272,685.7/Minstr), 4.04/byte
>   Writes:2,040,294,800 bytes (100%, 101,551.22/Minstr), 1.51/byte
>   Allocated at {
> #0: [root]
>   }
> }

I'm not sure I understand exactly what you're asking for, but:
- "how many times was an allocator accessed" might be the "5,943,417 blocks"
part
- "What is the read count of any width at any offset across all of blocks"
might be the "Reads: 5,478,606,988 bytes" part, though that's a byte count
rather than a read count.

Does that help?

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 406352] valgrind 3.15.0-RC1 fails cachegrind/callgrind ann tests because of missing a.c

2019-04-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=406352

Nick Nethercote  changed:

   What|Removed |Added

 CC||n.netherc...@gmail.com

--- Comment #1 from Nick Nethercote  ---
> +# They just serves as input for cg_annotate in ann1 and ann2.

s/serves/serve/

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399355] Add callgrind_diff

2019-03-11 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399355

--- Comment #13 from Nick Nethercote  ---
I haven't looked into the problems reported in comment 6. I don't see why this
shouldn't be able to work, but the Callgrind format does have a lot of bells
and whistles that the Cachegrind format does not, so they have to all be
handled appropriately.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 402369] Overhaul DHAT

2019-01-31 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=402369

Nick Nethercote  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|REPORTED|RESOLVED

--- Comment #11 from Nick Nethercote  ---
Landed as
https://sourceware.org/git/?p=valgrind.git;a=commit;h=441bfc5f51c7f5f80cc6491d23cbe2dc711d191f

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 402369] Overhaul DHAT

2019-01-31 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=402369

--- Comment #10 from Nick Nethercote  ---
> I think the order of the Sort Metrics in the documentation should match that
> in dh_view.html.

I just double-checked; as far as I can tell it does match. Which ones do you
think are out of order?

> How much work would it be to have a custom sort/filter option in the viewer?

That sounds difficult. I'm having trouble even imagining how it would work.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 402369] Overhaul DHAT

2019-01-10 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=402369

--- Comment #5 from Nick Nethercote  ---
> It might be interesting to replace the wordFM by an xtree,

It may. Nonetheless, I'd rather land the code as-is, because it's a major
improvement over the existing DHAT. We can consider optimizations to the
implementation later :)

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 402369] Overhaul DHAT

2019-01-10 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=402369

Nick Nethercote  changed:

   What|Removed |Added

 Attachment #117020|0   |1
is obsolete||

--- Comment #4 from Nick Nethercote  ---
Created attachment 117393
  --> https://bugs.kde.org/attachment.cgi?id=117393&action=edit
patch

Here is an updated patch with documentation written. I think this is ready to
land.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 402369] Overhaul DHAT

2018-12-20 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=402369

--- Comment #2 from Nick Nethercote  ---
If you want to try it out easily:
- save the attached file
- visit http://njn.valgrind.org/dh_view.html and load the saved file.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 402369] Overhaul DHAT

2018-12-20 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=402369

--- Comment #1 from Nick Nethercote  ---
Created attachment 117022
  --> https://bugs.kde.org/attachment.cgi?id=117022&action=edit
Sample output file

Here is output from a run of the Rust compiler under DHAT.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 402369] New: Overhaul DHAT

2018-12-19 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=402369

Bug ID: 402369
   Summary: Overhaul DHAT
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: callgrind
  Assignee: josef.weidendor...@gmx.de
  Reporter: n.netherc...@gmail.com
  Target Milestone: ---

Created attachment 117020
  --> https://bugs.kde.org/attachment.cgi?id=117020&action=edit
patch

I have totally overhauled DHAT. The current version is useful, but has some
annoyances and deficiencies. The new version is much better. I have used
extensively on the Rust compiler, using it on more than 20 PRs.

The only incomplete part is that I haven't updated the documentation. I plan to
do that just before landing, so that if I get feedback about the UI that causes
me to change the output I don't need to update the docs again.

What follows is the commit message, which describes the changes.

Overhaul DHAT.

This commit thoroughly overhauls DHAT, moving it out of the
"experimental" ghetto. It makes moderate changes to DHAT itself,
including dumping profiling data to a JSON format output file. It also
implements a new data viewer (as a web app, in dhat/dh_view.html).

The main benefits over the old DHAT are as follows.

- The separation of data collection and presentation means you can run a
  program once under DHAT and then sort the data in various ways. Also,
  full data is in the output file, and the viewer chooses what to omit.

- The data can be sorted in more ways than previously. Some of these
  sorts involve useful filters such as "short-lived" and "zero reads or
  zero writes".

- The tree structure view avoids the need to choose stack trace depth.
  This avoids both the problem of not enough depth (when records that
  should be distinct are combined, and may not contain enough
  information to be actionable) and the problem of too much depth (when
  records that should be combined are separated, making them seem less
  important than they really are).

- Byte and block measures are shown with a percentage relative to the
  global count, which helps gauge relative significance of different
  parts of the profile.

- Byte and blocks measures are also shown with an allocation rate
  (bytes and blocks per million instructions), which enables comparisons
  across multiple profiles, even if those profiles represent different
  workloads.

- Both global and per-node measurements are taken at the global heap
  peak ("At t-gmax"), which gives Massif-like insight into the point of
  peak memory use.

- The final/liftimes stats are a bit more useful than the old deaths
  stats. (E.g. the old deaths stats didn't take into account lifetimes
  of unfreed blocks.)

- The handling of realloc() has changed. The sequence `p = malloc(100);
  realloc(p, 200);` now increases the total block count by 2 and the
  total byte count by 300. Previously it increased them by 1 and 200.
  The new handling is a more operational view that better reflects the
  effect of allocations on performance. It makes a significant
  difference in the results, giving paths involving reallocation (e.g.
  repeated pushing to a growing vector) more prominence.

Other things of note:

- There is now testing, both regression tests that run within the
  standard test suite, and viewer-specific tests that cannot run within
  the standard test suite. The latter are run by loading
  dh_view.html?test=1 in a web browser.

- The commit puts all tool lists in Makefiles (and similar files) in a
  consistent order: memcheck, cachegrind, callgrind, helgrind, drd,
  massif, dhat, lackey, none; exp-sgcheck, exp-bbv.

- A lot of fields in dh_main.c have been given more descriptive names.
  Those names now match those used in dh_view.js.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 401454] Add a --show-percs option to cg_annotate and callgrind_annotate.

2018-12-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=401454

--- Comment #2 from Nick Nethercote  ---
Landed as
https://sourceware.org/git/?p=valgrind.git;a=commit;h=e6e837752183dd2c0ef00bf687b9fe759bd6553c

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 401454] Add a --show-percs option to cg_annotate and callgrind_annotate.

2018-12-05 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=401454

--- Comment #1 from Nick Nethercote  ---
I don't think this will be a controversial change, given that it doesn't change
default behaviours. I will land it early next week if there are no objections
in the meantime.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 401454] New: Add a --show-percs option to cg_annotate and callgrind_annotate.

2018-11-26 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=401454

Bug ID: 401454
   Summary: Add a --show-percs option to cg_annotate and
callgrind_annotate.
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: cachegrind
  Assignee: n...@valgrind.org
  Reporter: n.netherc...@gmail.com
  Target Milestone: ---

Created attachment 116523
  --> https://bugs.kde.org/attachment.cgi?id=116523&action=edit
patch

Add a --show-percs option to cg_annotate and callgrind_annotate.

Because it's very useful. As part of this, the "percentage of events
annotated" numbers at the bottom of the output is changed to "events
annotated" so that --show-percs doesn't compute a percentage of a
percentage.

Example output lines:

> 4,967,137,442 (100.0%)  PROGRAM TOTALS
> 
> 4,543 (25.23%)17,566 ( 0.43%)47,993 ( 0.92%) 
> /build/glibc-OTsEL5/glibc-2.27/elf/dl-lookup.c
> 
> 1 ( 0.01%) 2,000,001 (49.29%) 3,000,004 (57.36%) for (int i = 0; i < 
> 100; i++) {

The commit also adds some much-needed tests for cg_annotate and
callgrind_annotate.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399301] Use inlined frames in Massif XTree output.

2018-10-23 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399301

--- Comment #2 from Nick Nethercote  ---
Any reason not to land this? I think it's ready. It's a simple change and a
clear improvement.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399355] Add callgrind_diff

2018-10-18 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399355

Nick Nethercote  changed:

   What|Removed |Added

 Attachment #115396|0   |1
is obsolete||

--- Comment #5 from Nick Nethercote  ---
Created attachment 115743
  --> https://bugs.kde.org/attachment.cgi?id=115743&action=edit
Updated version

This fixes the problem that Philippe identified.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399322] Improve callgrind_annotate output

2018-10-12 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399322

Nick Nethercote  changed:

   What|Removed |Added

 Blocks|399355  |


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399355
[Bug 399355] Add callgrind_diff
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399355] Add callgrind_diff

2018-10-12 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399355

Nick Nethercote  changed:

   What|Removed |Added

 Depends on|399322  |


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399322
[Bug 399322] Improve callgrind_annotate output
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399355] Add callgrind_diff

2018-10-12 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399355
Bug 399355 depends on bug 399322, which changed state.

Bug 399322 Summary: Improve callgrind_annotate output
https://bugs.kde.org/show_bug.cgi?id=399322

   What|Removed |Added

 Status|REPORTED|RESOLVED
 Resolution|--- |FIXED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399322] Improve callgrind_annotate output

2018-10-12 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399322

Nick Nethercote  changed:

   What|Removed |Added

 Status|REPORTED|RESOLVED
 Resolution|--- |FIXED
 Depends on|399301  |

--- Comment #2 from Nick Nethercote  ---
Landed as
https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=331949c1c5cf78909a50c6b3559f36d9dcdeea79


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399301
[Bug 399301] Use inlined frames in Massif XTree output.
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399301] Use inlined frames in Massif XTree output.

2018-10-12 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399301

Nick Nethercote  changed:

   What|Removed |Added

 Blocks|399322  |


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399322
[Bug 399322] Improve callgrind_annotate output
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399355] Add callgrind_diff

2018-10-11 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399355

--- Comment #4 from Nick Nethercote  ---
Thank you for the feedback. I will look at the failures next week.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399355] Add callgrind_diff

2018-10-09 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399355

--- Comment #2 from Nick Nethercote  ---
Is it really worth splitting the patch? I guess you could put the threshold
changes in one patch and everything else in another, but it doesn't seem worth
the effort.

I did the original threshold changes in Cachegrind while writing cg_diff... I
don't remember the exact reason (it was a few years ago) but I did the
threshold changes in response to the results I was getting from cg_diff.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399322] Improve callgrind_annotate output

2018-10-03 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399322

Nick Nethercote  changed:

   What|Removed |Added

 Blocks||399355


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399355
[Bug 399355] Add callgrind_diff
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399355] New: Add callgrind_diff

2018-10-03 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399355

Bug ID: 399355
   Summary: Add callgrind_diff
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: callgrind
  Assignee: josef.weidendor...@gmx.de
  Reporter: n.netherc...@gmail.com
CC: josef.weidendor...@gmx.de, jsew...@acm.org
Depends on: 399301, 399322
  Target Milestone: ---

Created attachment 115396
  --> https://bugs.kde.org/attachment.cgi?id=115396&action=edit
Add callgrind_diff

Cachegrind has cg_diff, and it's useful. Callgrind should have callgrind_diff
too.


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399301
[Bug 399301] Use inlined frames in Massif XTree output.
https://bugs.kde.org/show_bug.cgi?id=399322
[Bug 399322] Improve callgrind_annotate output
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399301] Use inlined frames in Massif XTree output.

2018-10-03 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399301

Nick Nethercote  changed:

   What|Removed |Added

 Blocks||399355


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399355
[Bug 399355] Add callgrind_diff
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399301] Use inlined frames in Massif XTree output.

2018-10-02 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399301

Nick Nethercote  changed:

   What|Removed |Added

 Blocks||399322


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399322
[Bug 399322] Improve callgrind_annotate output
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399322] New: Improve callgrind_annotate output

2018-10-02 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399322

Bug ID: 399322
   Summary: Improve callgrind_annotate output
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: callgrind
  Assignee: josef.weidendor...@gmx.de
  Reporter: n.netherc...@gmail.com
CC: jsew...@acm.org
Depends on: 399301
  Target Milestone: ---

Created attachment 115370
  --> https://bugs.kde.org/attachment.cgi?id=115370&action=edit
Improve callgrind_annotate output

callgrind_annotate doesn't insert commas in call counts, and it doesn't sort
the caller/callee lists in the call tree. The attached patch fixes both of
these problems.


Referenced Bugs:

https://bugs.kde.org/show_bug.cgi?id=399301
[Bug 399301] Use inlined frames in Massif XTree output.
-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 399301] New: Use inlined frames in Massif XTree output.

2018-10-02 Thread Nick Nethercote
https://bugs.kde.org/show_bug.cgi?id=399301

Bug ID: 399301
   Summary: Use inlined frames in Massif XTree output.
   Product: valgrind
   Version: unspecified
  Platform: Other
OS: Linux
Status: REPORTED
  Severity: normal
  Priority: NOR
 Component: general
  Assignee: jsew...@acm.org
  Reporter: n.netherc...@gmail.com
  Target Milestone: ---

Created attachment 115360
  --> https://bugs.kde.org/attachment.cgi?id=115360&action=edit
Use inlined frames in Massif XTree output

DHAT can show inlined frames, but Massif currently can't. The attached patch
fixes this. I have tested that it works on the Rust compiler, which was my
motivating example: see
https://github.com/rust-lang/rust/issues/52028#issuecomment-402409368,
especially the part "Massif doesn't get great stack traces due to inlining, but
DHAT does a better job by using debuginfo."

-- 
You are receiving this mail because:
You are watching all bug changes.