lazbuild crashes when compiling packages
Original Reporter info from Mantis: mazen
-
Reporter name: Abou Al Montacir
Original Reporter info from Mantis: mazen
- Reporter name: Abou Al Montacir
Description:
This issue was initially reported as https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=943600
During Debian auto tests the packages are rebuilt and sometimes a crash in lazbuild is observed.
The following trace was obtained after the crash:
(1008) 3534 lines compiled, 0.6 sec
(1021) 4 warning(s) issued
(1022) 30 hint(s) issued
(1023) 3 note(s) issued
Warning: (lazarus) [TLazPackageGraph.ConvertPackageRSTFiles] skipping read only directory /usr/lib/lazarus/2.0.6/components/sparta/dockedformeditor/language/
Thread 4 "lazbuild" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7408700 (LWP 9098)]
0x000000000051ac03 in LEAVECRITICALSECTION (this=0x7ffff7641880) at ideexterntoolintf.pas:1237
1237 FWorkerMessages.LeaveCriticalSection;
(gdb) bt
# 0 0x000000000051ac03 in LEAVECRITICALSECTION (this=0x7ffff7641880) at ideexterntoolintf.pas:1237
# 1 0x00000000009e9cb5 in SETTHREAD (this=0x7ffff7641880, AVALUE=0x0) at exttools.pas:411
# 2 0x00000000009edc57 in SETTOOL (this=0x7ffff761fc40, AVALUE=0x0) at exttools.pas:1313
# 3 0x00000000009eeeb1 in DESTROY (this=0x7ffff761fc40, vmt=0x1) at exttools.pas:1612
# 4 0x000000000041cd20 in SYSTEM_
TOBJECT___
$_FREE ()
# 5 0x00007ffff77a9a80 in ?? ()
# 6 0x0000000000440cd7 in CLASSES_$_THREADFUNC
POINTER$$INT64 ()
# 7 0x00007ffff761fc40 in ?? ()
# 8 0x0000000000000000 in ?? ()
(gdb) p FWorkerMessages
$1 = 0x0
Steps to reproduce:
One can reproduce the issue by executing the following command multiple times. It may require tens of times before the issue is observed.
rm -r /tmp/.lazarus ; HOME=/tmp ./lazbuild -B --verbose /usr/lib/lazarus/2.0.6/components/sparta/smartformeditor/sparta_smartformeditor.lpk
Additional information:
Some investigations using instrumented code as follows resulted int he following logs:
Code changes:
procedure TAbstractExternalTool.EnterCriticalSection;
begin
WriteLn('+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = ', HexStr(FWorkerMessages));
FWorkerMessages.EnterCriticalSection;
WriteLn('-TAbstractExternalTool.EnterCriticalSection');
end;
procedure TAbstractExternalTool.LeaveCriticalSection;
begin
WriteLn('+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = ', HexStr(FWorkerMessages));
FWorkerMessages.LeaveCriticalSection;
WriteLn('-TAbstractExternalTool.LeaveCriticalSection');
end;
Logs:
(1008) 3534 lines compiled, 0.6 sec
(1021) 4 warning(s) issued
(1022) 30 hint(s) issued
(1023) 3 note(s) issued
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.LeaveCriticalSection
Warning: (lazarus) [TLazPackageGraph.ConvertPackageRSTFiles] skipping read only directory /usr/lib/lazarus/2.0.6/components/sparta/dockedformeditor/language/
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.LeaveCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.LeaveCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.LeaveCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.LeaveCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.LeaveCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A16DE0
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A16DE0
-TAbstractExternalTool.LeaveCriticalSection
+TAbstractExternalTool.EnterCriticalSection: FWorkerMessages = 00007FFFF7A13340
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A13340
-TAbstractExternalTool.LeaveCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 00007FFFF7A17940
-TAbstractExternalTool.LeaveCriticalSection
-TAbstractExternalTool.EnterCriticalSection
+TAbstractExternalTool.LeaveCriticalSection: FWorkerMessages = 0000000000000000
Thread 4 "lazbuild" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff7408700 (LWP 11030)]
0x000000000051ad0b in LEAVECRITICALSECTION (this=0x7ffff7649880) at ideexterntoolintf.pas:1240
1240 FWorkerMessages.LeaveCriticalSection;
(gdb)
Mantis conversion info:
- Mantis ID: 36318
- OS: Debian GNU/Linux
- OS Build: Stretch
- Build: 2.0.6-1
- Platform: x86_64
- Version: 2.0.6
- Fixed in revision: r64005 (#ad65618c)
- Monitored by: » mazen (Abou Al Montacir)