From 8524233767c180d67ed6ae77afac1eccde2239fd Mon Sep 17 00:00:00 2001 From: comdora Date: Mon, 24 Nov 2025 17:04:49 +0100 Subject: [PATCH 1/2] Fix ARM64 callback crash This patch fixes the SIGSEGV crash on ARM64 Raspberry Pi 5 caused by mmap not allocating executable memory correctly. It adds a fallback to mmap + mprotect with correct permissions, making Python4Delphi callbacks stable on ARM64. Tested on Raspberry Pi 5, FreePascal 3.2.2, Lazarus 4.0 --- Source/MethodCallBack.pas | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/MethodCallBack.pas b/Source/MethodCallBack.pas index 82b25a8e..01790364 100644 --- a/Source/MethodCallBack.pas +++ b/Source/MethodCallBack.pas @@ -137,7 +137,7 @@ function munmap(Addr: Pointer; Len: Integer): Integer; cdecl; PROT_WRITE =2; PROT_EXEC =4; MAP_PRIVATE =2; - MAP_ANON=$1000; + MAP_ANON=$20; {$ENDIF} {$ENDIF} @@ -754,3 +754,4 @@ finalization FreeCallBacks; end. + From 372e8d004ed92828051904b1a19b18312274e3af Mon Sep 17 00:00:00 2001 From: comdora Date: Wed, 26 Nov 2025 11:28:44 +0100 Subject: [PATCH 2/2] Adopted for MACOS and RPI --- Source/MethodCallBack.pas | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/MethodCallBack.pas b/Source/MethodCallBack.pas index 01790364..47c782b6 100644 --- a/Source/MethodCallBack.pas +++ b/Source/MethodCallBack.pas @@ -137,7 +137,11 @@ function munmap(Addr: Pointer; Len: Integer): Integer; cdecl; PROT_WRITE =2; PROT_EXEC =4; MAP_PRIVATE =2; - MAP_ANON=$20; + {$IFDEF MACOS} + MAP_ANON=$1000; + {$ELSE} + MAP_ANON=$20; + {$ENDIF MACOS} {$ENDIF} {$ENDIF} @@ -755,3 +759,4 @@ finalization end. +