M1 Macbook Air crash on running 4 simple C process in parallel
I have started reading Operating Systems: Three Easy Pieces, when I ran the example 2.1 on my MacBook Air M1 with 4 instances in parallel it spawned 4 unique processes but then my laptop crashed after 2-3 seconds. Please find the steps to replicate below:
simple-example.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <assert.h>
#include "common.h"
int
main(int argc, char *argv[]){
if (argc != 2) {
fprintf(stderr, "usage: cpu <string>\n"); exit(1);
}
char *str = argv[1];
while (1) {
Spin(1);
printf("%s\n", str);
}
return 0; }
[common.h][1]
#ifndef __common_h__
#define __common_h__
#include <sys/time.h>
#include <sys/stat.h>
#include <assert.h>
double GetTime() {
struct timeval t;
int rc = gettimeofday(&t, NULL);
assert(rc == 0);
return (double) t.tv_sec + (double) t.tv_usec/1e6;
}
void Spin(int howlong) {
double t = GetTime();
while ((GetTime() - t) < (double) howlong)
; // do nothing in loop
}
#endif // __common_h__
The program above as explained by the book:
Figure 2.1 depicts our first program. It doesn’t do much. In fact, all it does is call Spin(), a function that repeatedly checks the time and returns once it has run for a second. Then, it prints out the string that the user passed in on the command line, and repeats, forever.
I have copied common.h from the linked github file
Compile:
~ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: arm64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
gcc -o cpu simple-example.c -Wall
running a single instance of the process with a string works fine:
./cpu "A"
running multiple instances crashes the laptop:
./cpu A & ; ./cpu B & ; ./cpu C & ; ./cpu D &
This spawns 4 processes and starts printing the strings A C B D in random order but then a purple light flashed and the laptop died.
Laptop Specification:
OS: Big Sur
Version: 11.5.2
Chip: M1
Memory: 8GB
Crash Report:
panic(cpu 0 caller 0xfffffe002fb3f460): "Spinlock timeout after 12584284 ticks, 0xfffffe0033898588 = fffffe1667d2dfe1"
Debugger message: panic
Memory ID: 0xff
OS release type: User
OS version: 20G95
Kernel version: Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:27 PDT 2021; root:xnu-7195.141.2~5/RELEASE_ARM64_T8101
Fileset Kernelcache UUID: 15F4DFDFA9E0154FED96EA8997E65429
Kernel UUID: AC4A14A7-8A8E-3AE6-85A6-55E6B2502BF9
iBoot version: iBoot-6723.140.2
secure boot?: YES
Paniclog version: 13
KernelCache slide: 0x0000000027ec4000
KernelCache base: 0xfffffe002eec8000
Kernel slide: 0x0000000028a0c000
Kernel text base: 0xfffffe002fa10000
Kernel text exec base: 0xfffffe002fadc000
mach_absolute_time: 0xac2324506
Epoch Time: sec usec
Boot : 0x613ff694 0x00019680
Sleep : 0x00000000 0x00000000
Wake : 0x00000000 0x00000000
Calendar: 0x613ffe14 0x00092243
CORE 0 recently retired instr at 0xfffffe002fc4d6a4
CORE 1 recently retired instr at 0xfffffe002fc4ed6c
CORE 2 recently retired instr at 0xfffffe002fc4ed6c
CORE 3 recently retired instr at 0xfffffe002fc4ed6c
CORE 4 recently retired instr at 0xfffffe002fc4ed70
CORE 5 recently retired instr at 0xfffffe002fc4ed70
CORE 6 recently retired instr at 0xfffffe002fc4ed70
CORE 7 recently retired instr at 0xfffffe002fc4ed70
CORE 0 PVH locks held: None
CORE 1 PVH locks held: None
CORE 2 PVH locks held: None
CORE 3 PVH locks held: None
CORE 4 PVH locks held: None
CORE 5 PVH locks held: None
CORE 6 PVH locks held: None
CORE 7 PVH locks held: None
CORE 0 is the one that panicked. Check the full backtrace for details.
CORE 1: PC=0xfffffe002faecc28, LR=0xfffffe002faecc28, FP=0x0000000000000000
CORE 2: PC=0xfffffe002fb251f0, LR=0xfffffe002fb251f0, FP=0xfffffe3f58b4bd50
CORE 3: PC=0xfffffe002faecc28, LR=0xfffffe002faecc28, FP=0x0000000000000000
CORE 4: PC=0xfffffe002fb25200, LR=0xfffffe003004f268, FP=0xfffffe30987c3db0
CORE 5: PC=0xfffffe002fb25200, LR=0xfffffe003004f268, FP=0xfffffe309b17bdb0
CORE 6: PC=0xfffffe002fb25200, LR=0xfffffe003004f268, FP=0xfffffe3f5966bdb0
CORE 7: PC=0xfffffe002fb25200, LR=0xfffffe003004f268, FP=0xfffffe309af7bdb0
Panicked task 0xfffffe167984a1f8: 100 pages, 4 threads: pid 778: redis-server
Panicked thread: 0xfffffe16797df300, backtrace: 0xfffffe3f5958b6d0, tid: 6902
lr: 0xfffffe002fb2ab68 fp: 0xfffffe3f5958b740
lr: 0xfffffe002fb2a94c fp: 0xfffffe3f5958b7b0
lr: 0xfffffe002fc541c8 fp: 0xfffffe3f5958b7d0
lr: 0xfffffe002fc45674 fp: 0xfffffe3f5958b880
lr: 0xfffffe002fae37e8 fp: 0xfffffe3f5958b890
lr: 0xfffffe002fb2a5dc fp: 0xfffffe3f5958bc20
lr: 0xfffffe002fb2a5dc fp: 0xfffffe3f5958bc90
lr: 0xfffffe00302dce80 fp: 0xfffffe3f5958bcb0
lr: 0xfffffe002fb3f460 fp: 0xfffffe3f5958bce0
lr: 0xfffffe002fb3f2cc fp: 0xfffffe3f5958bd00
lr: 0xfffffe002fb25174 fp: 0xfffffe3f5958bd50
lr: 0xfffffe003004f268 fp: 0xfffffe3f5958bdb0
lr: 0xfffffe00301320e8 fp: 0xfffffe3f5958be40
lr: 0xfffffe002fc45350 fp: 0xfffffe3f5958bef0
lr: 0xfffffe002fae37e8 fp: 0xfffffe3f5958bf00
last started kext at 697335366: com.apple.filesystems.autofs 3.0 (addr 0xfffffe002f988000, size 16384)
loaded kexts:
com.apple.filesystems.autofs 3.0
com.apple.fileutil 20.036.15
com.apple.driver.AppleTopCaseHIDEventDriver 4050.1
com.apple.iokit.IOBluetoothSerialManager 8.0.5d7
com.apple.driver.AppleBiometricServices 1
com.apple.driver.DiskImages.ReadWriteDiskImage 493.0.0
com.apple.driver.DiskImages.UDIFDiskImage 493.0.0
com.apple.driver.DiskImages.RAMBackingStore 493.0.0
com.apple.driver.DiskImages.FileBackingStore 493.0.0
com.apple.filesystems.apfs 1677.141.1
com.apple.driver.BCMWLANFirmware4378.Hashstore 1
com.apple.driver.SEPHibernation 1
com.apple.driver.CoreKDL 1
com.apple.driver.AppleUSBDeviceNCM 5.0.0
com.apple.driver.AppleThunderboltIP 4.0.3
com.apple.driver.AppleSmartBatteryManager 161.0.0
com.apple.driver.AppleALSColorSensor 1.0.0d1
com.apple.driver.AppleAOPVoiceTrigger 11.5
com.apple.driver.AppleFileSystemDriver 3.0.1
com.apple.nke.l2tp 1.9
com.apple.filesystems.tmpfs 1
com.apple.driver.ApplePMP 1
com.apple.driver.ApplePMPFirmware 1
com.apple.driver.AppleSmartIO2 1
com.apple.IOTextEncryptionFamily 1.0.0
com.apple.filesystems.hfs.kext 556.100.11
com.apple.security.BootPolicy 1
com.apple.BootCache 40
com.apple.AppleFSCompression.AppleFSCompressionTypeZlib 1.0.0
com.apple.AppleFSCompression.AppleFSCompressionTypeDataless 1.0.0d1
com.apple.AppleEmbeddedSimpleSPINORFlasher 1
com.apple.driver.AppleDPDisplayTCON 1
com.apple.driver.AppleCS42L83Audio 442.26
com.apple.driver.AppleTAS5770LAmp 442.26
com.apple.driver.AppleSPMIPMU 1.0.1
com.apple.driver.AppleT8020SOCTuner 1
com.apple.driver.AppleT8103CLPCv3 1
com.apple.AGXG13G 173.28.7
com.apple.driver.AppleAVD 385
com.apple.driver.AppleAVE2 401.73.4
com.apple.driver.AppleJPEGDriver 4.6.0
com.apple.driver.AppleMobileDispH13G-DCP 140.0
com.apple.driver.usb.AppleUSBHostT8103 1
com.apple.driver.AudioDMAController-T8103 1.60.5
com.apple.driver.AppleS5L8960XNCO 1
com.apple.driver.AppleT8103PMGR 1
com.apple.driver.AppleS8000AES 1
com.apple.driver.AppleS8000DWI 1.0.0d1
com.apple.driver.AppleS5L8960XWatchDogTimer 1
com.apple.driver.AppleInterruptController 1.0.0d1
com.apple.driver.AppleT8020DART 1
com.apple.driver.AppleBluetoothModule 1
com.apple.driver.AppleSamsungSerial 1.0.0d1
com.apple.driver.AppleBCMWLANBusInterfacePCIe 1
com.apple.driver.AppleS5L8920XPWM 1.0.0d1
com.apple.driver.AppleS5L8940XI2C 1.0.0d2
com.apple.driver.AppleSPIMC 1
com.apple.driver.AppleT8101 1
com.apple.driver.AppleM68Buttons 1.0.0d1
com.apple.iokit.IOUserEthernet 1.0.1
com.apple.driver.usb.AppleUSBUserHCI 1
com.apple.iokit.IOKitRegistryCompatibility 1
com.apple.iokit.EndpointSecurity 1
com.apple.driver.AppleDiskImages2 1
com.apple.AppleSystemPolicy 2.0.0
com.apple.nke.applicationfirewall 311
com.apple.kec.InvalidateHmac 1
com.apple.kext.triggers 1.0
com.apple.driver.AppleActuatorDriver 4440.3
com.apple.driver.AppleHIDKeyboard 224
com.apple.driver.AppleMultitouchDriver 4440.3
com.apple.driver.AppleHSBluetoothDriver 4050.1
com.apple.driver.IOBluetoothHIDDriver 8.0.5d7
com.apple.iokit.IOAVBFamily 940.4
com.apple.plugin.IOgPTPPlugin 985.2
com.apple.iokit.IOEthernetAVBController 1.1.0
com.apple.driver.AppleMesaSEPDriver 100.99
com.apple.iokit.IOBiometricFamily 1
com.apple.driver.DiskImages.KernelBacked 493.0.0
com.apple.driver.AppleXsanScheme 3
com.apple.driver.AppleSEPHDCPManager 1.0.1
com.apple.driver.AppleTrustedAccessory 1
com.apple.iokit.AppleSEPGenericTransfer 1
com.apple.driver.IOBluetoothHostControllerPCIeTransport 8.0.5d7
com.apple.iokit.IOBluetoothHostControllerTransport 8.0.5d7
com.apple.driver.AppleConvergedIPCOLYBTControl 1
com.apple.driver.AppleConvergedPCI 1
com.apple.driver.AppleBluetoothDebug 1
com.apple.driver.AppleBTM 1.0.1
com.apple.driver.usb.networking 5.0.0
com.apple.driver.AppleThunderboltDPInAdapter 8.1.4
com.apple.driver.AppleThunderboltDPAdapterFamily 8.1.4
com.apple.driver.AppleThunderboltUSBDownAdapter 1.0.4
com.apple.driver.AppleThunderboltPCIDownAdapter 4.1.1
com.apple.driver.AppleAOPAudio 16.2
com.apple.driver.AppleHIDTransportSPI 4400.35
com.apple.driver.AppleHIDTransport 4400.35
com.apple.driver.AppleInputDeviceSupport 4400.35
com.apple.nke.ppp 1.9
com.apple.driver.AppleSPU 1
com.apple.driver.AppleDCPDPTXProxy 1.0.0
com.apple.driver.DCPDPFamilyProxy 1
com.apple.AGXFirmwareKextG13GRTBuddy 173.28.7
com.apple.AGXFirmwareKextRTBuddy64 173.28.7
com.apple.driver.AppleBSDKextStarter 3
com.apple.filesystems.hfs.encodings.kext 1
com.apple.iokit.IONVMeFamily 2.1.0
com.apple.driver.AppleDiagnosticDataAccessReadOnly 1.0.0
com.apple.driver.AppleNANDConfigAccess 1.0.0
com.apple.driver.AppleHPM 3.4.4
com.apple.driver.AppleStockholmControl 1.0.0
com.apple.driver.AppleCSEmbeddedAudio 442.26
com.apple.driver.AppleEmbeddedAudio 442.26
com.apple.iokit.AppleARMIISAudio 80.34.1
com.apple.driver.AppleDialogPMU 1.0.1
com.apple.driver.ApplePassthroughPPM 3.0
com.apple.iokit.IOGPUFamily 21.11
com.apple.driver.AppleH11ANEInterface 4.75.0
com.apple.driver.AppleH13CameraInterface 3.58.0
com.apple.driver.AppleH10PearlCameraInterface 16.15.1
com.apple.driver.DCPAVFamilyProxy 1
com.apple.iokit.IOMobileGraphicsFamily-DCP 343.0.0
com.apple.driver.AppleDCP 1
com.apple.driver.AppleFirmwareKit 1
com.apple.iokit.IOMobileGraphicsFamily 343.0.0
com.apple.driver.AppleSPMI 1.0.1
com.apple.driver.AppleUSBXDCIARM 1.0
com.apple.driver.AppleUSBXDCI 1.0
com.apple.iokit.IOUSBDeviceFamily 2.0.0
com.apple.driver.usb.AppleUSBXHCIARM 1
com.apple.driver.usb.AppleUSBXHCI 1.2
com.apple.driver.AppleEmbeddedUSBHost 1
com.apple.driver.usb.AppleUSBHub 1.2
com.apple.driver.usb.AppleUSBHostCompositeDevice 1.2
com.apple.driver.AppleT8103TypeCPhy 1
com.apple.driver.AppleSART 1
com.apple.driver.ApplePMGR 1
com.apple.driver.watchdog 1
com.apple.driver.usb.AppleUSBHostPacketFilter 1.0
com.apple.driver.AppleDisplayCrossbar 1.0.0
com.apple.iokit.IODisplayPortFamily 1.0.0
com.apple.driver.AppleTypeCPhy 1
com.apple.driver.AppleThunderboltNHI 7.2.8
com.apple.driver.AppleT8103PCIeC 1
com.apple.iokit.IOThunderboltFamily 9.3.2
com.apple.driver.ApplePIODMA 1
com.apple.driver.AppleT8103PCIe 1
com.apple.driver.AppleMultiFunctionManager 1
com.apple.driver.AppleEmbeddedPCIE 1
com.apple.driver.AppleBluetoothDebugService 1
com.apple.driver.AppleBCMWLANCore 1.0.0
com.apple.iokit.IO80211FamilyV2 1200.12.2b1
com.apple.driver.IOImageLoader 1.0.0
com.apple.driver.corecapture 1.0.4
com.apple.driver.AppleMCA2-T8103 540.10
com.apple.driver.AppleGPIOICController 1.0.2
com.apple.driver.AppleFireStormErrorHandler 1
com.apple.driver.AppleMobileApNonce 1
com.apple.iokit.IOTimeSyncFamily 985.2
com.apple.driver.DiskImages 493.0.0
com.apple.iokit.IOGraphicsFamily 585.1
com.apple.iokit.IOBluetoothFamily 8.0.5d7
com.apple.iokit.IOBluetoothPacketLogger 8.0.5d7
com.apple.driver.FairPlayIOKit 68.7.1
com.apple.iokit.CoreAnalyticsFamily 1
com.apple.driver.AppleSSE 1.0
com.apple.driver.AppleSEPKeyStore 2
com.apple.driver.AppleUSBTDM 511.141.1
com.apple.iokit.IOUSBMassStorageDriver 184.140.2
com.apple.iokit.IOPCIFamily 2.9
com.apple.iokit.IOSCSIBlockCommandsDevice 436.140.1
com.apple.iokit.IOSCSIArchitectureModelFamily 436.140.1
com.apple.driver.AppleIPAppender 1.0
com.apple.driver.AppleFDEKeyStore 28.30
com.apple.driver.AppleEffaceableStorage 1.0
com.apple.driver.AppleCredentialManager 1.0
com.apple.driver.KernelRelayHost 1
com.apple.iokit.IOUSBHostFamily 1.2
com.apple.driver.AppleUSBHostMergeProperties 1.2
com.apple.driver.usb.AppleUSBCommon 1.0
com.apple.driver.AppleSMC 3.1.9
com.apple.driver.RTBuddy 1.0.0
com.apple.driver.AppleEmbeddedTempSensor 1.0.0
com.apple.driver.AppleARMPMU 1.0
com.apple.iokit.IOAccessoryManager 1.0.0
com.apple.driver.AppleOnboardSerial 1.0
com.apple.iokit.IOSkywalkFamily 1
com.apple.driver.mDNSOffloadUserClient 1.0.1b8
com.apple.iokit.IONetworkingFamily 3.4
com.apple.iokit.IOSerialFamily 11
com.apple.driver.AppleSEPManager 1.0.1
com.apple.driver.AppleA7IOP 1.0.2
com.apple.driver.IOSlaveProcessor 1
com.apple.driver.AppleBiometricSensor 2
com.apple.iokit.IOHIDFamily 2.0.0
com.apple.AUC 1.0
com.apple.iokit.IOAVFamily 1.0.0
com.apple.iokit.IOHDCPFamily 1.0.0
com.apple.iokit.IOCECFamily 1
com.apple.iokit.IOAudio2Family 1.0
com.apple.driver.AppleEmbeddedAudioLibs 1.17
com.apple.driver.AppleFirmwareUpdateKext 1
com.apple.driver.AppleM2ScalerCSCDriver 265.0.0
com.apple.iokit.IOSurface 290.8.1
com.apple.driver.IODARTFamily 1
com.apple.security.quarantine 4
com.apple.security.sandbox 300.0
com.apple.kext.AppleMatch 1.0.0d1
com.apple.driver.AppleMobileFileIntegrity 1.0.5
com.apple.kext.CoreTrust 1
com.apple.security.AppleImage4 3.0.0
com.apple.iokit.IOCryptoAcceleratorFamily 1.0.1
com.apple.driver.AppleARMPlatform 1.0.2
com.apple.iokit.IOStorageFamily 2.1
com.apple.iokit.IOSlowAdaptiveClockingFamily 1.0.0
com.apple.iokit.IOReportFamily 47
com.apple.kec.pthread 1
com.apple.kec.corecrypto 11.1
com.apple.kec.Libm 1
** Stackshot Succeeded ** Bytes Traced 364005 (Uncompressed 950640) **
This is happened both the times I run the code, Geekbench 5 is running fine result
Is this some problem with code or M1 SOC issue?
How do I explain this to apple to get a replacement? I bought this laptop on August 4th without apple care
Update: @DarkDust suggested killing redis and trying, still crashing.
Solution 1:
I just tried on an M1 Mini, it already crashes with three processes, without printing any letter at all.
./cpu A & ./cpu B & ./cpu C &
Best to report it to Apple then.