Eu observei que libGL.so
da Nvidia tenta detectar se o processo atual está sendo rastreado, abrindo /proc/self/status
e procurando por " TracerPid:
". Caminhos de código diferentes são tomados dependendo se o valor de TracerPid
é diferente de zero (isto é, o processamento atual está sendo rastreado ou não).
Instale sysdig e capture o rastreio para o processo ofensivo duas vezes, uma vez enquanto estiver em stracing, uma vez sem o strace. Por exemplo:
$ sysdig -w glxgears.scap proc.name=glxgears &
$ glxgears &
$ kill -TERM 'pidof glxgears'
$ kill -TERM 'pidof sysdig'
$ sysdig -w glxgears-strace.scap proc.name=glxgears &
$ strace glxgears &
$ kill -TERM 'pidof glxgears'
$ kill -TERM 'pidof sysdig'
Compare a saída textual dos dois rastreamentos diferentes para observar a alteração no fluxo de execução entre as execuções com strings e sem strings de glxgears
.
strace
"corrige" seu problema de OpenGL, porque libGL
está se comportando de maneira diferente dependendo se o processo está sendo rastreado / depurado.