Inappropriate loops behaviour <for(), foreach(), break, continue>, segmentation fault while producing stacktrace #62

Otwarty
otworzone 2019-12-21 11:13:56 +01:00 przez belliash · 3 komentarzy
Właściciel

AerScript Information

  • Aer Version (or commit ref): ab36234ff3
  • Operating System: Linux
  • System Architecture (eg. arm, x86_64, ...): x86_64

Your problem description

I have written another test - sudoku solver. It causes AerScript interpreter to fail. Sometimes it simply results in no solution, sometimes throws segmentation fault. When investigating issue, I realized this is connected with LOOP frames. After modifying code, to not declare variables repeatedly inside loops and removing OP_LOOP_START and OP_LOOP_START calls from PH7_CompileFor(), PH7_CompileBreak() and PH7_CompileContinue(), attached script has begun to work properly. Additionally, during investigation I have found another problem with for() loop statement:

for(int $a = 0; $a < 5; $a++) {
}
var_dump($a); // shows 4, while it should result in non-existent variable error.

Expected results

3 0 6 5 0 8 4 0 0
5 2 0 0 0 0 0 0 0
0 8 7 0 0 0 0 3 1
0 0 3 0 1 0 0 8 0
9 0 0 8 6 3 0 0 5
0 5 0 0 9 0 6 0 0
1 3 0 0 0 0 2 5 0
0 0 0 0 0 0 0 7 4
0 0 5 2 0 6 3 0 0
=================
3 1 6 5 7 8 4 9 2
5 2 9 1 3 4 7 6 8
4 8 7 6 2 9 5 3 1
2 6 3 4 1 5 9 8 7
9 7 4 8 6 3 1 2 5
8 5 1 7 9 2 6 4 3
1 3 8 9 4 7 2 5 6
6 9 2 3 5 1 8 7 4
7 4 5 2 8 6 3 1 9

Current results

3 0 6 5 0 8 4 0 0 
5 2 0 0 0 0 0 0 0
0 8 7 0 0 0 0 3 1 
0 0 3 0 1 0 0 8 0 
9 0 0 8 6 3 0 0 5
0 5 0 0 9 0 6 0 0 
1 3 0 0 0 0 2 5 0 
0 0 0 0 0 0 0 7 4
0 0 5 2 0 6 3 0 0 
=================
No solution found
AddressSanitizer:DEADLYSIGNAL
=================================================================
==13697==ERROR: AddressSanitizer: SEGV on unknown address 0x60e800050cb4 (pc 0x7f515465b959 bp 0x62d00000a424 sp 0x7fff6d5431d8 T0)
==13697==The signal is caused by a READ memory access.
#0 0x7f515465b958 in PH7_VmExtractActiveClass engine/vm.c:5383
#1 0x7f51546560dc in VmExtractDebugTrace engine/debug.c:47
#2 0x7f515465b292 in PH7_VmThrowError engine/vm.c:1785
#3 0x7f515465dc97 in VmByteCodeExec engine/vm.c:2375
#4 0x7f5154661495 in VmByteCodeExec engine/vm.c:4805
#5 0x7f51546627dd in PH7_VmCallClassMethod engine/vm.c:6193
#6 0x7f515466386a in PH7_VmByteCodeExec engine/vm.c:5082
#7 0x7f5154652f75 in ph7_vm_exec engine/api.c:616
#8 0x55a1e67910c7 in main (/home/Belliash/Documents/Repositories/AerScript/binary/aer+0x10c7)
#9 0x7f515446be9a in __libc_start_main (/lib64/libc.so.6+0x26e9a)
#10 0x55a1e6790be9 in _start (/home/Belliash/Documents/Repositories/AerScript/binary/aer+0xbe9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV engine/vm.c:5383 in PH7_VmExtractActiveClass
==13697==ABORTING
<!-- 1. Please speak English, this is the language all of us can speak and write. 2. Please take a moment to check that your issue doesn't already exist. 3. Please give all relevant information below for bug reports, because incomplete details will be handled as an invalid report. --> # AerScript Information - Aer Version (or commit ref): ab36234ff3 - Operating System: Linux - System Architecture (eg. arm, x86_64, ...): x86_64 # Your problem description I have written another test - sudoku solver. It causes AerScript interpreter to fail. Sometimes it simply results in no solution, sometimes throws segmentation fault. When investigating issue, I realized this is connected with LOOP frames. After modifying code, to not declare variables repeatedly inside loops and removing OP_LOOP_START and OP_LOOP_START calls from PH7_CompileFor(), PH7_CompileBreak() and PH7_CompileContinue(), attached script has begun to work properly. Additionally, during investigation I have found another problem with for() loop statement: for(int $a = 0; $a < 5; $a++) { } var_dump($a); // shows 4, while it should result in non-existent variable error. # Expected results 3 0 6 5 0 8 4 0 0 5 2 0 0 0 0 0 0 0 0 8 7 0 0 0 0 3 1 0 0 3 0 1 0 0 8 0 9 0 0 8 6 3 0 0 5 0 5 0 0 9 0 6 0 0 1 3 0 0 0 0 2 5 0 0 0 0 0 0 0 0 7 4 0 0 5 2 0 6 3 0 0 ================= 3 1 6 5 7 8 4 9 2 5 2 9 1 3 4 7 6 8 4 8 7 6 2 9 5 3 1 2 6 3 4 1 5 9 8 7 9 7 4 8 6 3 1 2 5 8 5 1 7 9 2 6 4 3 1 3 8 9 4 7 2 5 6 6 9 2 3 5 1 8 7 4 7 4 5 2 8 6 3 1 9 # Current results 3 0 6 5 0 8 4 0 0 5 2 0 0 0 0 0 0 0 0 8 7 0 0 0 0 3 1 0 0 3 0 1 0 0 8 0 9 0 0 8 6 3 0 0 5 0 5 0 0 9 0 6 0 0 1 3 0 0 0 0 2 5 0 0 0 0 0 0 0 0 7 4 0 0 5 2 0 6 3 0 0 ================= No solution found AddressSanitizer:DEADLYSIGNAL ================================================================= ==13697==ERROR: AddressSanitizer: SEGV on unknown address 0x60e800050cb4 (pc 0x7f515465b959 bp 0x62d00000a424 sp 0x7fff6d5431d8 T0) ==13697==The signal is caused by a READ memory access. #0 0x7f515465b958 in PH7_VmExtractActiveClass engine/vm.c:5383 #1 0x7f51546560dc in VmExtractDebugTrace engine/debug.c:47 #2 0x7f515465b292 in PH7_VmThrowError engine/vm.c:1785 #3 0x7f515465dc97 in VmByteCodeExec engine/vm.c:2375 #4 0x7f5154661495 in VmByteCodeExec engine/vm.c:4805 #5 0x7f51546627dd in PH7_VmCallClassMethod engine/vm.c:6193 #6 0x7f515466386a in PH7_VmByteCodeExec engine/vm.c:5082 #7 0x7f5154652f75 in ph7_vm_exec engine/api.c:616 #8 0x55a1e67910c7 in main (/home/Belliash/Documents/Repositories/AerScript/binary/aer+0x10c7) #9 0x7f515446be9a in __libc_start_main (/lib64/libc.so.6+0x26e9a) #10 0x55a1e6790be9 in _start (/home/Belliash/Documents/Repositories/AerScript/binary/aer+0xbe9) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV engine/vm.c:5383 in PH7_VmExtractActiveClass ==13697==ABORTING
Author
Właściciel

Attached affected script.

Attached affected script.
belliash dodano
bug
etykietę 2019-12-21 11:24:11 +01:00
Author
Właściciel

Revisions c730082fa0 and 709b5971c6 fixes the segmentation fault problem. There is still a need to investigate and resolve problem of variables scopes.

Revisions c730082fa0 and 709b5971c6 fixes the segmentation fault problem. There is still a need to investigate and resolve problem of variables scopes.
Author
Właściciel

Sudoku solver test added in 3eb82e632b.

Sudoku solver test added in 3eb82e632b.
Zaloguj się, aby dołączyć do tej rozmowy.
Brak kamienia milowego
Brak przypisanych
Uczestnicy 1
Powiadomienia
Termin realizacji
Data realizacji jest niewłaściwa lub spoza zakresu. Użyj formatu 'yyyy-mm-dd'.

Brak ustawionego terminu realizacji.

Zależności

No dependencies set.

Reference: aerscript/Aer#62
No description provided.