MacBook – Screen glitch when two users are logged on

buggpumacbook pro

The following happens on my MacBook Pro 16", macOS Catalina 10.15.1. I have two active user accounts which may be logged on simultaneously. If two users are logged on, I observe a split-second freeze of the screen exactly every 1 minute. This is very annoying when watching videos, but actually observable during any actions, e.g. window dragging or typing text. The issue is visible when logged in as any of those two users.

This only happens when two users are logged on. If only one user is logged on, everything works fine.

By analyzing the console logs, I came to a conclusion this has something to do with the integrated/discrete GPU. The console (filtered by "AGC::") shows the following routine happening at 00 seconds of every minute: first "PEG start powerup" message (a short half-second screen freeze happens at this point), then approx. 7 seconds later the "PEG start powerdown" message.

I'm not sure if this is a normal process, but this powerup/powerdown happens once every minute and seems to be directly related to the freeze.

05:44:00.128704+0100    kernel  AGC:: [WindowServer pid:225] force EG up last PID 225 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:0 power-state 6 3D busy HDA idle system-state 1 power-level 20:20 power-retry 0:0 connect-change 0
05:44:00.128756+0100    kernel  AGC:: [WindowServer pid:225] force EG up last PID 225 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:0 power-state 6 3D busy HDA idle system-state 1 power-level 20:20 power-retry 0:0 connect-change 0
05:44:00.329108+0100    kernel  AGC:: :::::::> PEG start powerup [0m 53.144s downtime]
05:44:00.825109+0100    kernel  AGC:: PEG0 WillPowerOn, 3, AGC path 1 trace 3
05:44:00.825165+0100    kernel  AGC:: PEG0 HasPoweredOn, 3, AGC path 1 trace 7
05:44:00.825177+0100    kernel  AGC:: PEG0 HasPoweredOn vendorID 0x19018086 address2 0x30100 nextID 0x14781002 retryID 0x0 retryCount 0:0
05:44:00.825195+0100    kernel  AGC:: EGP0 WillPowerOn vendorID 0x14781002 address2 0x0
05:44:00.825268+0100    kernel  AGC:: EGP0 HasPoweredOn vendorID 0x14781002 address2 0x30201 g3dID 0x0 hdaID 0x0
05:44:00.825283+0100    kernel  AGC:: EGP1 WillPowerOn vendorID 0x14791002 address2 0x0
05:44:00.825356+0100    kernel  AGC:: EGP1 HasPoweredOn vendorID 0x14791002 address2 0x30302 g3dID 0x73401002 hdaID 0xab381002
05:44:00.825375+0100    kernel  AGC:: GFX0 WillPowerOn vendorID 0x73401002 address2 0xc
05:44:00.825432+0100    kernel  AGC:: GFX0 HasPoweredOn vendorID 0x73401002 address2 0x1000000c g3dID 0x73401002 hdaID 0xab381002
05:44:00.825449+0100    kernel  AGC:: HDAU WillPowerOn vendorID 0xab381002 address2 0x0
05:44:00.825505+0100    kernel  AGC:: HDAU HasPoweredOn vendorID 0xab381002 address2 0x0 g3dID 0x73401002 hdaID 0xab381002
05:44:01.057209+0100    kernel  AGC:: *******> PEG powerup took: 0.728s
05:44:02.057777+0100    kernel  AGC:: [WindowServer pid:225] force EG up last PID 225 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:1f power-state 0 3D busy HDA idle system-state 1 power-level 20:20 power-retry 0:0 connect-change 0
05:44:02.057797+0100    kernel  AGC:: [WindowServer pid:225] force EG up last PID 225 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:1f power-state 0 3D busy HDA idle system-state 1 power-level 20:20 power-retry 0:0 connect-change 0
05:44:03.336961+0100    kernel  AGC:: mux-regs 10 3 7f 1f 0 0 severity 0 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:1f power-state 0 3D idle HDA idle system-state 1 power-level 20:20 power-retry 0:0 connect-change 0 : AGC Dump State Timer
05:44:07.059227+0100    kernel  AGC:: HDAU WillPowerOff
05:44:07.059273+0100    kernel  AGC:: HDAU HasPoweredOff
05:44:07.061698+0100    kernel  AGC:: :::::::> PEG start powerdown [0m 6.732s uptime]
05:44:07.151376+0100    kernel  AGC:: GFX0 WillPowerOff
05:44:07.151405+0100    kernel  AGC:: GFX0 HasPoweredOff
05:44:07.151410+0100    kernel  AGC:: EGP1 WillPowerOff
05:44:07.151449+0100    kernel  AGC:: EGP1 HasPoweredOff
05:44:07.151453+0100    kernel  AGC:: EGP0 WillPowerOff
05:44:07.151495+0100    kernel  AGC:: EGP0 HasPoweredOff
05:44:07.151499+0100    kernel  AGC:: PEG0 WillPowerOff, 3, AGC path 1 trace f
05:44:07.151520+0100    kernel  AGC:: PEG0 HasPoweredOff, 3, AGC path 1 trace 1
05:44:07.187799+0100    kernel  AGC:: *******> PEG powerdown took: 0.127s
05:44:10.070053+0100    kernel  AGC:: mux-regs 10 0 40 1 0 0 severity 0 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:0 power-state 6 3D idle HDA idle system-state 1 power-level 20:20 power-retry 0:0 connect-change 0 : AGC Dump State Timer

There's no message about the graphics device actually being switched from integrated (IDG) to discrete GPU (PEG), which was confirmed by the gfxCardStatus and the absence of "Switching from IDG to PEG" message in the logs.

By the way, if I force the discrete GPU using gfxCardStatus, the issue disappears.

At this point I'm stuck, as my knowledge of OS X architecture and debugging is exhausted. Can anyone provide any guidance?

Best Answer

Start with:

  1. Reset NVRAM / PRAM
  2. Reset the SMC

If your Mac has a double GPU:

  1. Disable the Automatic graphics switching located under System Preferences -> Energy Saver.

Disabling this option will force the Mac to run with the dedicated GPU. From the issue described above it seems a bug in OS X that enable both user profiles to have control over the GPU, even if one is currently inactive.

If this does not solve the issue:

  1. Boot in safe mode

    • If the problem persists also there it could be caused by an installed software. At that point you can proceed by exclusion.