keybase / keybase/client

Blank window starting up & high GPU usage

Open
#26,105 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
9.2k
Forks
1.3k
PR merge metrics
PR metrics pending

Description

It looks like this has been reported a few different times, but nothing open recently; I apologize if this is a duplicate.

When Keybase starts up, I get a blank window, and my CPU fan kicks in to high gear. Since the window was blank, I took a look a the system logs, and see this logged repeatedly:

```
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: [38922:0102/143908.849904:ERROR:shared_context_state.cc(83)] Skia shader compilation error
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: ------------------------
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: // Vertex SKSL
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: #extension GL_NV_shader_noperspective_interpolation: require
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: uniform float4 sk_RTAdjust;in float2 position;in float2 localCoord;noperspective out float2 vlocalCoord_S0;void main() {// Primitive Processor QuadPerEdgeAAGeometryProcessor
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: vlocalCoord_S0 = localCoord;sk_Position = position.xy01;}
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: // Fragment SKSL
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: #extension GL_NV_shader_noperspective_interpolation: require
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: uniform sampler2D uTextureSampler_0_S0;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: noperspective in float2 vlocalCoord_S0;void main() {// Stage 0, QuadPerEdgeAAGeometryProcessor
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: half4 outputColor_S0 = half4(1);float2 texCoord;texCoord = vlocalCoord_S0;outputColor_S0 = (blend_modulate(sample(uTextureSampler_0_S0, texCoord), half4(1)));const half4 outputCoverage_S0 = half4(1);{ // Xfer Processor: Porter Duff
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: sk_FragColor = outputColor_S0 * outputCoverage_S0;}}
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: // Vertex GLSL
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: #version 300 es
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: #extension GL_NV_shader_noperspective_interpolation : require
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: precision mediump float;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: precision mediump sampler2D;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: uniform highp vec4 sk_RTAdjust;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: in highp vec2 position;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: in highp vec2 localCoord;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: noperspective out highp vec2 vlocalCoord_S0;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: void main() {
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: vlocalCoord_S0 = localCoord;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: gl_Position = vec4(position, 0.0, 1.0);
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: gl_Position = vec4(gl_Position.xy * sk_RTAdjust.xz + gl_Position.ww * sk_RTAdjust.yw, 0.0, gl_Position.w);
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: }
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: // Fragment GLSL
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: #version 300 es
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: #extension GL_NV_shader_noperspective_interpolation : require
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: precision mediump float;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: precision mediump sampler2D;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: out mediump vec4 sk_FragColor;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: uniform sampler2D uTextureSampler_0_S0;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: noperspective in highp vec2 vlocalCoord_S0;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: void main() {
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: mediump vec4 outputColor_S0 = vec4(1.0);
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: highp vec2 texCoord = vlocalCoord_S0;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: outputColor_S0 = texture(uTextureSampler_0_S0, texCoord, -0.5);
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: {
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: sk_FragColor = outputColor_S0;
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: }
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: }
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: Errors:
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: link failed but did not provide an info log
Jan 02 14:39:08 ironic-mullet.eminorinc.com Keybase[38922]: [38922:0102/143908.860210:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 3 times!
```

The PID that's complaining is the GPU process. The `ps` output for it, from a different run:

```
awatts 42921 11.1 0.3 34418984 120396 ? Sl 14:43 0:00 /opt/keybase/Keybase --type=gpu-process --enable-crash-reporter=f2c6b2f0-68ab-4786-8ba1-efb0936b0051,no_channel --user-data-dir=/home/awatts/.config/Keybase --gpu-preferences=WAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAGAAAAAAAAAAYAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --shared-files --field-trial-handle=0,i,10379683291385471131,4716982485993926029,262144 --disable-features=SpareRendererForSitePerProcess
```

If I kill that process, the Keybase window appears and things appear to work normally (though I haven't tried to do anything significant beyond click around in the gui). I get the following message in the system log when I kill the GPU process:

```
Jan 02 14:43:52 ironic-mullet.eminorinc.com Keybase[42798]: [42798:0102/144352.419998:ERROR:gpu_process_host.cc(957)] GPU process exited unexpectedly: exit_code=15
Jan 02 14:43:52 ironic-mullet.eminorinc.com Keybase[43353]: [43353:0102/144352.585157:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 1 times!
Jan 02 14:43:54 ironic-mullet.eminorinc.com Keybase[43353]: [43353:0102/144354.529164:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 2 times!
Jan 02 14:43:59 ironic-mullet.eminorinc.com Keybase[43353]: [43353:0102/144359.768438:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 3 times!
```

I'm on Fedora Linux 39 on a Lenovo Thinkpad T580. My video hardware is an "Intel Corporation UHD Graphics 620 (rev 07)" according to `lspci`. My keybase version is `keybase version 6.2.4-20240101011938+ae7e4a1c15`, though I think this has been happening for some time.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing startup on Fedora 39 with the Intel UHD Graphics 620 and inspect the Electron GPU process logs for the repeated Skia shader and VSync errors. Done means Keybase opens normally without a blank window or sustained high CPU/GPU usage.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, linux
Domain
desktop, operating-systems, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.