Comments (1)
Ok, got a backtrace :
(gdb) goroutine 1 bt
#0 syscall.Syscall6 () at /usr/lib/go/src/syscall/asm_linux_amd64.s:45
#1 0x00000000004acf27 in syscall.Pread (fd=3, p= []uint8 = {...}, offset=0, n=0, err=...) at /usr/lib/go/src/syscall/zsyscall_linux_amd64.go:1372
#2 0x0000000000470c69 in os.(*File).pread (f=0xc42002e9a0, b= []uint8 = {...}, off=0, n=842386256064, err=...) at /usr/lib/go/src/os/file_unix.go:238
#3 0x000000000046e87c in os.(*File).ReadAt (f=0xc42002e9a0, b= []uint8 = {...}, off=0, n=842350659584, err=...) at /usr/lib/go/src/os/file.go:120
#4 0x00000000005c6f88 in debug/elf.NewFile (r=..., ~r1=0xc42002e9a0, ~r2=...) at /usr/lib/go/src/debug/elf/file.go:228
#5 0x00000000005c6ceb in debug/elf.Open (name="/dev/dri/renderD128", ~r1=0xc42220f101, ~r2=...) at /usr/lib/go/src/debug/elf/file.go:190
#6 0x000000000054137b in github.com/google/pprof/internal/binutils.(*Binutils).openELF (b=0xc420071680, name="/dev/dri/renderD128", start=139960538550272, limit=139964847157248, offset=0, ~r4=..., ~r5=...)
at /home/paraboul/dev/nidium/Nidium/third-party/pprof/src/github.com/google/pprof/internal/binutils/binutils.go:157
#7 0x0000000000540c8a in github.com/google/pprof/internal/binutils.(*Binutils).Open (b=0xc420071680, name="/dev/dri/renderD128", start=139960538550272, limit=139964847157248, offset=0, ~r4=..., ~r5=...)
at /home/paraboul/dev/nidium/Nidium/third-party/pprof/src/github.com/google/pprof/internal/binutils/binutils.go:134
#8 0x00000000005c0432 in github.com/google/pprof/internal/symbolizer.newMapping (prof=0xc421fb5540, obj=..., ui=..., force=false, ~r4=0x1, ~r5=...)
at /home/paraboul/dev/nidium/Nidium/third-party/pprof/src/github.com/google/pprof/internal/symbolizer/symbolizer.go:313
#9 0x00000000005bee23 in github.com/google/pprof/internal/symbolizer.doLocalSymbolize (mode="", prof=0xc421fb5540, obj=..., ui=..., ~r4=...)
at /home/paraboul/dev/nidium/Nidium/third-party/pprof/src/github.com/google/pprof/internal/symbolizer/symbolizer.go:122
#10 0x00000000005be579 in github.com/google/pprof/internal/symbolizer.(*Symbolizer).Symbolize (s=0xc42014c200, mode="", sources=0xc422207da0, p=0xc421fb5540, ~r3=...)
at /home/paraboul/dev/nidium/Nidium/third-party/pprof/src/github.com/google/pprof/internal/symbolizer/symbolizer.go:77
#11 0x00000000004dd7f4 in github.com/google/pprof/internal/driver.fetchProfiles (s=0xc42200abd0, o=0xc420071620, ~r2=0x0, ~r3=...)
So it seems that for some reason, it tries to symbolize a device file (/dev/dri/renderD128), and get stuck here.
Edit:
So yes, the profiled executable is using OpenGL (through Mesa), which I guess use a DRM device (/dev/dri/renderD128) that pprof tries to symbolize.
Is there a way I can tell pprof not to symbolize this? Also, I guess that a kind of timeout would avoid that.
Without symbolization :
../tools/pprof -symbolize=None ./nidium /tmp/profile.nidium paraboul@nigiro
File: nidium
Type: cpu
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top
Showing nodes accounting for 2.83s, 100% of 2.83s total
Dropped 3 nodes (cum <= 0.01s)
Showing top 10 nodes out of 15
flat flat% sum% cum cum%
2.46s 86.93% 86.93% 2.66s 93.99% [nidium]
0.16s 5.65% 92.58% 2.32s 81.98% [renderD128]
0.13s 4.59% 97.17% 0.60s 21.20% [libc-2.24.so]
0.03s 1.06% 98.23% 0.06s 2.12% [libglib-2.0.so.0.5000.2]
0.02s 0.71% 98.94% 0.02s 0.71% [ld-2.24.so]
0.01s 0.35% 99.29% 0.02s 0.71% [libdrm_intel.so.1.0.0]
0.01s 0.35% 99.65% 0.05s 1.77% [libgtk-3.so.0.2200.6]
0.01s 0.35% 100% 0.11s 3.89% [libpthread-2.24.so]
from pprof.
Related Issues (20)
- Proposal: add Discriminator field to Line message HOT 6
- quotes in CPU profile tags not escaped properly HOT 1
- Jsjdj
- Switch to the new flame graph implementation by default and remove d3 dependency HOT 3
- Hash-pin workflow Actions
- Module did not self-register: Worker Threads HOT 1
- disasm: no matches found for regexp HOT 2
- Add tests for javascript code HOT 3
- Error & Troubleshooting HOT 1
- Support code coverage in javascript test HOT 1
- Add elf type and load segment information to mapping HOT 1
- pprof on MacOS can't find dot? HOT 3
- UI Support for tag commands: tagfocus, tagignore, tagshow, tagroot, etc HOT 1
- -tagroot and -tagleaf in UI aren't including the tag name? HOT 4
- New flame graph appears to reset the profile state in an unexpected way HOT 1
- If the file under the current path contains a colon, go tool pprof will parse it into a url and will not work properly.
- Compatibility guarantees for Profile-Guided Optimization (PGO) purposes with Go HOT 2
- Set Function.start_line when symbolizing HOT 3
- Patch CVE for d3-color HOT 1
- make sources/sinks a different color HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pprof.