I have a 15" Macbook Pro from early 2011 and am trying to figure out whether the logic board is broken.
Background and Original Symptoms
In 2016, my Macbook first showed signs of a broken GPU. Since at the time Apple's repair extension program was still in place, I got the logic board replaced for free. However, about a month ago it died again with the same symptoms. I send it in to a third party repair shop to replace the GPU. It worked fine for a while, but about a week ago it randomly shut down again. I later found a couple of Kernel Panic Reports that indicated a GPU restart 4 times with 10 seconds apart the heades of which looked like this:
Tue Jun 19 15:10:16 2018 Event: GPU Reset Date/Time: Tue Jun 19 15:10:16 2018 Application: Adobe CEF Helper Path: Tailspin: /Library/Logs/DiagnosticReports/gpuRestart2018-06-19-151016.tailspin GPUSubmission Trace ID: 0 OS Version: Mac OS X Version 10.13.4 (Build 17E199) Graphics Hardware: AMD Radeon HD 6490M Signature: 0 Report Data: GPURestartReportStart ------------------------ Hung Channels: PM4 ------------------------  AccelChannel: PM4 Pending Command from : GLCtx PendingCommandTimestamp: 0x00129836, TotalDWords: 0x00000d20, GART Offset=0x0000000010fe4000, stamp_idx=0, estamp=0x00129836 ------------------------  PM4 HWChannel : Enabled, NotIdle LastReadTimestamp : 0x00129835 NextSubmitTimestamp : 0x00129870 [PM4, ts:0x00129836]: No semaphore wait [PM4, ts:0x00129836]: semaphore signal: 0xffffff8019d0a940 HWSemaphore 0xffffff8019d0a940 Signal Event: [PM4 channel TS:0x00129836 lastReadTS:0x00129835] ------------------------ GPU HangFlags 0x00000004: AsicHangState 0x00000004, AsicResetRequirement 0x00000002 IndividualEngineHang: 0 NonEngineBlockHang : 0 FenceNotRetired : 1 PerEngineReset : 0 FullAsicReset : 1 HangEngineBitmap : 0x00000000 ------------------------ AMDCaicosGraphicsAccelerator PCIe Device: [1:0:0] State: ENABLED Configuration: deviceBits: 0x02006760, capabilityBits: 0x30940100 TotalVideoRAMBytes: 0x0000000010000000 (268435456) ------------------------  PM4 Engine : Enabled, NotIdle  PM4 Channel: Enabled, NotIdle, lastReadTimestamp 0x00129835, nextSubmitTimestamp 0x00129870 ------------------------  SDMA Engine : Enabled, Idle  DMA Channel: Enabled, Idle, lastReadTimestamp 0x00002ccb, nextSubmitTimestamp 0x00002ccd ------------------------  UVD Engine : Disabled, Idle  UVD Channel: Disabled, Idle, lastReadTimestamp 0x00000000, nextSubmitTimestamp 0x00000001 ------------------------  SAMU Engine : Disabled, Idle  SPU Channel: Disabled, Idle, lastReadTimestamp 0x00000000, nextSubmitTimestamp 0x00000001 ------------------------ : ** GPU Debug Info Start ** ..... : ** GPU Debug Info End ** ------------------------  HWRing: Enabled RingSizeInDwords: 0x4000, FreeSpace: 0x317f, Head: 0x00000f40, LastSubmitPosition: 0x00001dc0, Tail: 0x00001dc0 RB_RPTR: 0xffffffff, RB_WPTR: 0xffffffff HWRingDumpStart: .......
Following this the Macbook would turn on again and continued to work for about a day, however, at one point after putting it in sleep mode it failed to shutdown and ran for an hour in my laptop case running considerably hot. After that I wasn't able to boot it normally anymore. Booting in safe mode would work relatively consistently, however, it would still sometimes crash and after crashes or trying to boot it regularly, it wouldn't turn on for a couple of times (usually two or three) even in safe mode with only the white indicator light repeatedly blinking three times in a row. At no point would I get a startup chime or the three beeping sounds that can indicate a failed boot. This is one of the kernel panics of a crash in single user mode.
Anonymous UUID: 205EDCCF-EF18-8D15-BE39-898FB58E209B Sun Jun 24 00:32:48 2018 *** Panic Report *** panic(cpu 2 caller 0xffffff8000388c2d): Kernel trap at 0xffffff800036dce5, type 13=general protection, registers: CR0: 0x0000000080010033, CR2: 0x0000000123ab6000, CR3: 0x00000001609f7004, CR4: 0x00000000000626e0 RAX: 0x0000000000000001, RBX: 0x00000000027c8340, RCX: 0x000000000013e41a, RDX: 0xffffff800a6577a0 RSP: 0xffffff8099d13c10, RBP: 0xffffff8099d13ce0, RSI: 0x0000000000000001, RDI: 0xfffffffffffff000 R8: 0x0000000000000000, R9: 0x9fffffffffffffff, R10: 0xffff000000000000, R11: 0x000000010b010000 R12: 0x000000010b012000, R13: 0xffffff8009fd5340, R14: 0xfff7ff8009fd5340, R15: 0x000000000013e41a RFL: 0x0000000000010206, RIP: 0xffffff800036dce5, CS: 0x0000000000000008, SS: 0x0000000000000010 Fault CR2: 0x0000000123ab6000, Error code: 0x0000000000000000, Fault CPU: 0x2, PL: 2, VF: 0 Backtrace (CPU 2), Frame : Return Address 0xffffff800014d270 : 0xffffff800026e166 0xffffff800014d2c0 : 0xffffff8000396714 0xffffff800014d300 : 0xffffff8000388a00 0xffffff800014d380 : 0xffffff8000220180 0xffffff800014d3a0 : 0xffffff800026dbdc 0xffffff800014d4d0 : 0xffffff800026d99c 0xffffff800014d530 : 0xffffff8000388c2d 0xffffff800014d6b0 : 0xffffff8000220180 0xffffff800014d6d0 : 0xffffff800036dce5 0xffffff8099d13ce0 : 0xffffff800036ebd4 0xffffff8099d13d40 : 0xffffff80002f92ef 0xffffff8099d13e80 : 0xffffff80002f8ad2 0xffffff8099d13ec0 : 0xffffff8000261b37 0xffffff8099d13ef0 : 0xffffff80003735ad 0xffffff8099d13fa0 : 0xffffff8000220986 BSD process name corresponding to current thread: fsck_apfs Boot args: -v -x Mac OS version: 17E199 Kernel version: Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST 2018; root:xnu-4570.51.1~1/RELEASE_X86_64 Kernel UUID: 1B55340B-0B14-3026-8A47-1E139DB63DA3 __HIB text base: 0xffffff8000100000 System model name: MacBookPro8,2 (Mac-94245A3940C91C80) System uptime in nanoseconds: 78011217698 last loaded kext at 2546528984: com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 6.0.5f3 (addr 0xffffff7f829b1000, size 49152) last unloaded kext at 61980408256: com.apple.driver.usb.AppleUSBUHCI 1.2 (addr 0xffffff7f81444000, size 147456) loaded kexts: com.apple.driver.AppleUSBTCButtons 254 com.apple.driver.AppleUSBTCKeyboard 254 com.apple.driver.AppleIRController 353 com.apple.filesystems.hfs.kext 407.50.6 com.apple.AppleFSCompression.AppleFSCompressionTypeDataless 1.0.0d1 com.apple.BootCache 40 com.apple.AppleFSCompression.AppleFSCompressionTypeZlib 1.0.0 com.apple.iokit.SCSITaskUserClient 404.30.2 com.apple.filesystems.apfs 748.51.0 com.apple.driver.AirPort.Brcm4331 800.21.30 com.apple.driver.AppleSDXC 1.7.6 com.apple.iokit.AppleBCM5701Ethernet 10.3.1 com.apple.driver.AppleFWOHCI 5.5.9 com.apple.driver.AppleAHCIPort 329.50.2 com.apple.driver.AppleSmartBatteryManager 161.0.0 com.apple.driver.AppleACPIButtons 6.1 com.apple.driver.AppleHPET 1.8 com.apple.driver.AppleRTC 2.0 com.apple.driver.AppleSMBIOS 2.1 com.apple.driver.AppleACPIEC 6.1 com.apple.driver.AppleAPIC 1.7 com.apple.driver.AppleIntelCPUPowerManagementClient 220.50.1 com.apple.nke.applicationfirewall 183 com.apple.security.TMSafetyNet 8 com.apple.security.quarantine 3 com.apple.driver.AppleIntelCPUPowerManagement 220.50.1 com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 6.0.5f3 com.apple.iokit.IOBluetoothHostControllerUSBTransport 6.0.5f3 com.apple.iokit.IOBluetoothHostControllerTransport 6.0.5f3 com.apple.iokit.IOBluetoothFamily 6.0.5f3 com.apple.driver.AppleUSBMultitouch 261 com.apple.driver.usb.IOUSBHostHIDDevice 1.2 com.apple.driver.usb.networking 5.0.0 com.apple.driver.usb.AppleUSBHostCompositeDevice 1.2 com.apple.driver.usb.AppleUSBHub 1.2 com.apple.filesystems.hfs.encodings.kext 1 com.apple.iokit.IOSCSIMultimediaCommandsDevice 404.30.2 com.apple.iokit.IOBDStorageFamily 1.8 com.apple.iokit.IODVDStorageFamily 1.8 com.apple.iokit.IOCDStorageFamily 1.8 com.apple.driver.AppleThunderboltDPInAdapter 5.5.3 com.apple.driver.AppleThunderboltDPAdapterFamily 5.5.3 com.apple.driver.AppleThunderboltPCIDownAdapter 2.1.3 com.apple.driver.AppleThunderboltNHI 4.7.2 com.apple.iokit.IOThunderboltFamily 6.7.8 com.apple.iokit.IOAHCISerialATAPI 267.50.1 com.apple.iokit.IOAHCIBlockStorage 301.40.2 com.apple.iokit.IOEthernetAVBController 1.1.0 com.apple.iokit.IOFireWireFamily 4.7.0 com.apple.iokit.IO80211Family 1200.12.2 com.apple.driver.mDNSOffloadUserClient 1.0.1b8 com.apple.driver.corecapture 1.0.4 com.apple.iokit.IOAHCIFamily 288 com.apple.driver.usb.AppleUSBEHCIPCI 1.2 com.apple.driver.usb.AppleUSBEHCI 1.2 com.apple.driver.usb.AppleUSBHostPacketFilter 1.0 com.apple.iokit.IOUSBFamily 900.4.1 com.apple.driver.AppleUSBHostMergeProperties 1.2 com.apple.driver.AppleEFINVRAM 2.1 com.apple.driver.AppleEFIRuntime 2.1 com.apple.iokit.IOHIDFamily 2.0.0 com.apple.iokit.IOSMBusFamily 1.1 com.apple.security.sandbox 300.0 com.apple.kext.AppleMatch 1.0.0d1 com.apple.driver.DiskImages 480.50.10 com.apple.driver.AppleFDEKeyStore 28.30 com.apple.driver.AppleEffaceableStorage 1.0 com.apple.driver.AppleKeyStore 2 com.apple.driver.AppleUSBTDM 439.50.6 com.apple.driver.AppleMobileFileIntegrity 1.0.5 com.apple.iokit.IOUSBMassStorageDriver 140.50.3 com.apple.iokit.IOSCSIBlockCommandsDevice 404.30.2 com.apple.iokit.IOSCSIArchitectureModelFamily 404.30.2 com.apple.iokit.IOStorageFamily 2.1 com.apple.driver.AppleCredentialManager 1.0 com.apple.driver.KernelRelayHost 1 com.apple.iokit.IOUSBHostFamily 1.2 com.apple.driver.usb.AppleUSBCommon 1.0 com.apple.driver.AppleBusPowerController 1.0 com.apple.driver.AppleSEPManager 1.0.1 com.apple.driver.IOSlaveProcessor 1 com.apple.iokit.IOReportFamily 31 com.apple.iokit.IOTimeSyncFamily 675.12 com.apple.iokit.IONetworkingFamily 3.4 com.apple.driver.AppleACPIPlatform 6.1 com.apple.driver.AppleSMC 3.1.9 com.apple.iokit.IOPCIFamily 2.9 com.apple.iokit.IOACPIFamily 1.4 com.apple.kec.pthread 1 com.apple.kec.corecrypto 1.0 EOF
Interestingly enough, the kernel panic would come up at this point during boot more than once. There is another kernel panic report indicating the same last loaded and unloaded kexts (also in single user mode).
I have tried the Apple Hardware Test via Internet Recovery Mode at multiple stages. The non extensive test would not result in any errors at first, however, at later times (after trying to disable the discrete GPU) even if booting into Internet Recovery, the Macbook would freeze or crash during the test.
Thinking at this point, that the GPU was at fault I tried the method explained by LangLangC in this question GPU Problem, setting an nvar variable in order to stop the Macbook from using the discrete GPU on boot.
Following that method, however, I was still not able to boot regularly and the Macbook basically showed the same symptoms as before. I installed gfxCardStatus during a safe boot and was surprised to see that apparently my Macbook was (and still is) constantly running on the discrete GPU. Force switching to the integrated GPU would not work (even with trying to select it multiple times which is apparently a well known bug for gfxCardStatus). By now thinking that it might be a case of bad RAM I reversed the hack by resetting SMC and PRAM deleting all NVAR variables and moving the kext file back to its original place as well as updating the caches. I then tried reseating the RAM and tested the individual modules.
It turned out that even without the hack the Macbook will boot regularly if only the upper slot of RAM is in use. Whenever there is RAM installed in the lower slot, it shows the same symptoms as before. When booting with only one RAM module in the upper slot, the Macbook shows graphic glitches when scrolling or changing windows that are seemingly exactly the same as in safe mode.
gfxCardStatus and the System Report still show that only the discrete GPU is being used. Switching to the integrated GPU via gfxCardStatus does not work although it is recognized and listed in the System Report and Dynamic Switching is enabled. There is still no startup chime and although the sound works it does not appear to be as loud as usual. A while ago my screen went black for a short while before turning on again only for the Macbook to crash a minute later.
At this point I have no idea what else could help or what might be causing this kind of behaviour. If the discrete GPU is at fault why is my Macbook apparently using it constantly and why would it only boot when only one RAM slot is in use? And if the logic board is at fault, how come the symptoms first appeared after multiple GPU restarts, why can't I switch to the iGPU and why do I experience graphic glitches when not in safe boot? By now I'm at the end of my ropes here and any kind of help would be very appreciated.
@LangLangC: The command you proposed yielded the following output:
IG: FB0:off FB1:N/A FB2:N/A 3D:idle HDA:N/A Power:on EG: FB0:on FB1:off FB2:off 3D:idle HDA:idle Power:on Policy:off GPUPowerDown:on Backlight Control:on Recovery:on Power State Machine IG: 0 EG: 0
I was not able to switch to the integrated GPU afterwards and the output did not change as well. In safe mode I get the following output:
IG: FB0:off FB1:N/A FB2:N/A 3D:idle HDA:N/A Power:on EG: FB0:on FB1:off FB2:off 3D:idle HDA:N/A Power:on Policy:on GPUPowerDown:on Backlight Control:on Recovery:on Power State Machine IG: 0 EG: 0
However, Policy:on was showing in regular boot as well.