Symbolizing with GNU addr2line 2.40 records `??:?` as the filename of a location with no line info
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
L'analisi si trova in readFrame in internal/binutils/addr2liner.go, intorno alle righe 150-165, che attualmente svuota il nome del file solo per ??:0. Leggi la funzione e i test esistenti di addr2liner, quindi verifica come la suddivisione su : gestisce una riga non numerica. È completato quando ??:? produce un nome file vuoto, come ??:0, e un test copre entrambe le forme.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When pprof symbolizes through GNU addr2line from binutils 2.40, it records ??:? as the filename of a location with no file and line info. addr2line 2.40 prints ??:? for an unknown location, but pprof recognizes only ??:0.
Reproduction
In golang:1.26-bookworm (GNU addr2line 2.40), with a heap profile from gperftools:
apt-get update -qq && apt-get install -y -qq google-perftools libgoogle-perftools-dev
go install github.com/google/pprof@latest
cat > t.c <<'C'
#include <stdlib.h>
#include <string.h>
__attribute__((noinline)) char *grow(int n) { char *p = malloc(n); memset(p, 1, n); return p; }
int main(void) { char *k[64] = {0}; for (int i = 0; i < 100000; i++) { free(k[i % 64]); k[i % 64] = grow(64 + i % 512); } return 0; }
C
gcc -O2 -o t t.c # no -g
HEAPPROFILE=h LD_PRELOAD=$(find / -name libtcmalloc.so -print -quit) ./t
heap=$(ls h.*.heap | sort | tail -1)
addr2line -f -C -i -e ./t 0x$(nm ./t | awk '$3=="grow"{print $1}')
"$(go env GOPATH)/bin/pprof" -raw ./t "$heap" | sed -n '/^Locations/,/^Mappings/p'
Actual
addr2line reports the location as unknown:
grow
??:?
pprof records ??:? as the filename:
1: 0xaaaae88f08f7 M=1 grow ??:?:0:0 s=0
2: 0xaaaae88f0757 M=1 main ??:?:0:0 s=0
4: 0xffff85df7817 M=6 __libc_start_main ??:?:0:0 s=0
A profile written with -proto contains ??:? as each function's filename, and tools reading it show ??:? as the source location.
Expected
An empty filename, as pprof produces for addr2line's ??:0. With llvm-symbolizer installed in the same image, pprof writes these locations with an empty filename (:0:0).
Environment
- pprof
v0.0.0-20261008003335-7bae8d8c4c9e(@latest) - GNU addr2line (GNU Binutils for Debian) 2.40
- Debian bookworm, linux/arm64
Cause
readFrame empties the filename only for ??:0. For ??:?, the text after the last : is not a number, so the whole string stays as the filename:
- Lingua principale
- Go
- Stelle
- 9.3k
- Fork
- 682
- Merge medio
- 2g 4h
- PR unite (30g)
- 11
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di google/pprof
-
Make comments more discoverable in the web UIForse già presa @jabrailkhalil l’ha presa 16 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
google/pprof#1029 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 74/100
google/pprof#1020 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
pprof cannot locate source code for the list command in common Go setupsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
google/pprof#1009 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Label with zero int64 value and no unit get dropped during decodingForse già presa @ms-hujia l’ha presa 121 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
google/pprof#1002 · 6 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 42/100
google/pprof#992 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di google/pprof
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
keyxmakerx/Chronicle#1469 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Gentleman-Programming/gentle-ai#5565 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug frontend grammar sev-3
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
-
Docs: say where source and device come from in the Withings and Polar guidesForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaconnector docs good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
soma-intelligence/open-health-sync#134 ·
I maintainer di solito rispondono entro 1 giorno
-
bug frontend
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 3 giorni