He empezado a leer Sistemas Operativos: Three Easy Pieces, cuando ejecuté el ejemplo 2.1 en mi Macbook Air M1 con 4 instancias en paralelo se generaron 4 procesos únicos, pero luego mi portátil se estrelló después de 2-3 segundos. Por favor, encontrar los pasos para replicar a continuación:
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__
El programa anterior tal y como se explica en el libro:
La figura 2.1 muestra nuestro primer programa. No hace mucho. De hecho, todo lo que hace es llamar a Spin(), una función que comprueba repetidamente el tiempo y regresa una vez que se ha ejecutado durante un segundo. Entonces, imprime la cadena que el usuario pasó en la línea de comandos, y repite, para siempre.
He copiado common.h del archivo enlazado de github
Compilar:
~ 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
La ejecución de una sola instancia del proceso con una cadena funciona bien:
./cpu "A"
La ejecución de varias instancias bloquea el portátil:
./cpu A & ; ./cpu B & ; ./cpu C & ; ./cpu D &
Esto genera 4 procesos y comienza a imprimir las cadenas A C B D en orden aleatorio, pero luego una luz púrpura parpadeó y el portátil murió.
Especificación del portátil:
OS: Big Sur
Version: 11.5.2
Chip: M1
Memory: 8GB
Informe sobre el accidente:
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) **
Esto ha ocurrido las dos veces que he ejecutado el código, Geekbench 5 funciona bien resultado
¿Es un problema de código o de M1 SOC?
¿Cómo le explico esto a Apple para que me sustituya? Compré este portátil el 4 de agosto sin apple care
Actualización: @DarkDust sugirió matar a redis e intentarlo, sigue fallando.