Code Monkey home page Code Monkey logo

Comments (1)

paraboul avatar paraboul commented on July 28, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.