Skip to content

Commit cd22a47

Browse files
authored
Fix TLSF state corruption (#1060)
1 parent 74e0178 commit cd22a47

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+132
-244
lines changed

std/assembly/rt/tlsf.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -552,14 +552,10 @@ export function reallocateBlock(root: Root, block: Block, size: usize): Block {
552552
}
553553

554554
// otherwise move the block
555-
var newBlock = allocateBlock(root, size);
555+
var newBlock = allocateBlock(root, size); // may invalidate cached blockInfo
556556
newBlock.rtId = block.rtId;
557557
memory.copy(changetype<usize>(newBlock) + BLOCK_OVERHEAD, changetype<usize>(block) + BLOCK_OVERHEAD, size);
558-
if (changetype<usize>(block) >= __heap_base) {
559-
block.mmInfo = blockInfo | FREE;
560-
insertBlock(root, block);
561-
if (isDefined(ASC_RTRACE)) onfree(block);
562-
}
558+
if (changetype<usize>(block) >= __heap_base) freeBlock(root, block);
563559
return newBlock;
564560
}
565561

tests/compiler/do.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,7 +1116,7 @@
11161116
if
11171117
i32.const 0
11181118
i32.const 64
1119-
i32.const 569
1119+
i32.const 565
11201120
i32.const 2
11211121
call $~lib/builtins/abort
11221122
unreachable
@@ -1824,7 +1824,7 @@
18241824
if
18251825
i32.const 0
18261826
i32.const 64
1827-
i32.const 593
1827+
i32.const 589
18281828
i32.const 2
18291829
call $~lib/builtins/abort
18301830
unreachable

tests/compiler/do.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,7 +1534,7 @@
15341534
if
15351535
i32.const 0
15361536
i32.const 64
1537-
i32.const 569
1537+
i32.const 565
15381538
i32.const 2
15391539
call $~lib/builtins/abort
15401540
unreachable
@@ -3437,7 +3437,7 @@
34373437
if
34383438
i32.const 0
34393439
i32.const 64
3440-
i32.const 593
3440+
i32.const 589
34413441
i32.const 2
34423442
call $~lib/builtins/abort
34433443
unreachable

tests/compiler/extends-baseaggregate.optimized.wat

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,7 @@
869869
if
870870
i32.const 0
871871
i32.const 128
872-
i32.const 569
872+
i32.const 565
873873
i32.const 2
874874
call $~lib/builtins/abort
875875
unreachable
@@ -1670,14 +1670,9 @@
16701670
i32.const 556
16711671
i32.ge_u
16721672
if
1673-
local.get $1
1674-
local.get $4
1675-
i32.const 1
1676-
i32.or
1677-
i32.store
16781673
local.get $0
16791674
local.get $1
1680-
call $~lib/rt/tlsf/insertBlock
1675+
call $~lib/rt/tlsf/freeBlock
16811676
end
16821677
local.get $3
16831678
)
@@ -1693,7 +1688,7 @@
16931688
if
16941689
i32.const 0
16951690
i32.const 128
1696-
i32.const 586
1691+
i32.const 582
16971692
i32.const 2
16981693
call $~lib/builtins/abort
16991694
unreachable
@@ -2005,7 +2000,7 @@
20052000
if
20062001
i32.const 0
20072002
i32.const 128
2008-
i32.const 593
2003+
i32.const 589
20092004
i32.const 2
20102005
call $~lib/builtins/abort
20112006
unreachable

tests/compiler/extends-baseaggregate.untouched.wat

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,7 +1146,7 @@
11461146
if
11471147
i32.const 0
11481148
i32.const 128
1149-
i32.const 569
1149+
i32.const 565
11501150
i32.const 2
11511151
call $~lib/builtins/abort
11521152
unreachable
@@ -3156,14 +3156,9 @@
31563156
global.get $~lib/heap/__heap_base
31573157
i32.ge_u
31583158
if
3159-
local.get $1
3160-
local.get $4
3161-
i32.const 1
3162-
i32.or
3163-
i32.store
31643159
local.get $0
31653160
local.get $1
3166-
call $~lib/rt/tlsf/insertBlock
3161+
call $~lib/rt/tlsf/freeBlock
31673162
end
31683163
local.get $8
31693164
)
@@ -3183,7 +3178,7 @@
31833178
if
31843179
i32.const 0
31853180
i32.const 128
3186-
i32.const 586
3181+
i32.const 582
31873182
i32.const 2
31883183
call $~lib/builtins/abort
31893184
unreachable
@@ -3565,7 +3560,7 @@
35653560
if
35663561
i32.const 0
35673562
i32.const 128
3568-
i32.const 593
3563+
i32.const 589
35693564
i32.const 2
35703565
call $~lib/builtins/abort
35713566
unreachable

tests/compiler/for.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1136,7 +1136,7 @@
11361136
if
11371137
i32.const 0
11381138
i32.const 64
1139-
i32.const 569
1139+
i32.const 565
11401140
i32.const 2
11411141
call $~lib/builtins/abort
11421142
unreachable
@@ -1844,7 +1844,7 @@
18441844
if
18451845
i32.const 0
18461846
i32.const 64
1847-
i32.const 593
1847+
i32.const 589
18481848
i32.const 2
18491849
call $~lib/builtins/abort
18501850
unreachable

tests/compiler/for.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1568,7 +1568,7 @@
15681568
if
15691569
i32.const 0
15701570
i32.const 64
1571-
i32.const 569
1571+
i32.const 565
15721572
i32.const 2
15731573
call $~lib/builtins/abort
15741574
unreachable
@@ -3471,7 +3471,7 @@
34713471
if
34723472
i32.const 0
34733473
i32.const 64
3474-
i32.const 593
3474+
i32.const 589
34753475
i32.const 2
34763476
call $~lib/builtins/abort
34773477
unreachable

tests/compiler/managed-cast.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,7 @@
867867
if
868868
i32.const 0
869869
i32.const 32
870-
i32.const 569
870+
i32.const 565
871871
i32.const 2
872872
call $~lib/builtins/abort
873873
unreachable
@@ -1588,7 +1588,7 @@
15881588
if
15891589
i32.const 0
15901590
i32.const 32
1591-
i32.const 593
1591+
i32.const 589
15921592
i32.const 2
15931593
call $~lib/builtins/abort
15941594
unreachable

tests/compiler/managed-cast.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,7 +1144,7 @@
11441144
if
11451145
i32.const 0
11461146
i32.const 32
1147-
i32.const 569
1147+
i32.const 565
11481148
i32.const 2
11491149
call $~lib/builtins/abort
11501150
unreachable
@@ -3065,7 +3065,7 @@
30653065
if
30663066
i32.const 0
30673067
i32.const 32
3068-
i32.const 593
3068+
i32.const 589
30693069
i32.const 2
30703070
call $~lib/builtins/abort
30713071
unreachable

tests/compiler/rc/global-init.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@
668668
if
669669
i32.const 0
670670
i32.const 96
671-
i32.const 569
671+
i32.const 565
672672
i32.const 2
673673
call $~lib/builtins/abort
674674
unreachable
@@ -3039,7 +3039,7 @@
30393039
if
30403040
i32.const 0
30413041
i32.const 96
3042-
i32.const 593
3042+
i32.const 589
30433043
i32.const 2
30443044
call $~lib/builtins/abort
30453045
unreachable

tests/compiler/rc/local-init.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@
486486
if
487487
i32.const 0
488488
i32.const 96
489-
i32.const 569
489+
i32.const 565
490490
i32.const 2
491491
call $~lib/builtins/abort
492492
unreachable
@@ -1517,7 +1517,7 @@
15171517
if
15181518
i32.const 0
15191519
i32.const 96
1520-
i32.const 593
1520+
i32.const 589
15211521
i32.const 2
15221522
call $~lib/builtins/abort
15231523
unreachable

tests/compiler/rc/local-init.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@
606606
if
607607
i32.const 0
608608
i32.const 96
609-
i32.const 569
609+
i32.const 565
610610
i32.const 2
611611
call $~lib/builtins/abort
612612
unreachable
@@ -2977,7 +2977,7 @@
29772977
if
29782978
i32.const 0
29792979
i32.const 96
2980-
i32.const 593
2980+
i32.const 589
29812981
i32.const 2
29822982
call $~lib/builtins/abort
29832983
unreachable

tests/compiler/rc/logical-and-mismatch.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,7 @@
866866
if
867867
i32.const 0
868868
i32.const 32
869-
i32.const 569
869+
i32.const 565
870870
i32.const 2
871871
call $~lib/builtins/abort
872872
unreachable
@@ -1576,7 +1576,7 @@
15761576
if
15771577
i32.const 0
15781578
i32.const 32
1579-
i32.const 593
1579+
i32.const 589
15801580
i32.const 2
15811581
call $~lib/builtins/abort
15821582
unreachable

tests/compiler/rc/logical-and-mismatch.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,7 +1143,7 @@
11431143
if
11441144
i32.const 0
11451145
i32.const 32
1146-
i32.const 569
1146+
i32.const 565
11471147
i32.const 2
11481148
call $~lib/builtins/abort
11491149
unreachable
@@ -3050,7 +3050,7 @@
30503050
if
30513051
i32.const 0
30523052
i32.const 32
3053-
i32.const 593
3053+
i32.const 589
30543054
i32.const 2
30553055
call $~lib/builtins/abort
30563056
unreachable

tests/compiler/rc/logical-or-mismatch.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,7 @@
866866
if
867867
i32.const 0
868868
i32.const 32
869-
i32.const 569
869+
i32.const 565
870870
i32.const 2
871871
call $~lib/builtins/abort
872872
unreachable
@@ -1576,7 +1576,7 @@
15761576
if
15771577
i32.const 0
15781578
i32.const 32
1579-
i32.const 593
1579+
i32.const 589
15801580
i32.const 2
15811581
call $~lib/builtins/abort
15821582
unreachable

tests/compiler/rc/logical-or-mismatch.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,7 +1143,7 @@
11431143
if
11441144
i32.const 0
11451145
i32.const 32
1146-
i32.const 569
1146+
i32.const 565
11471147
i32.const 2
11481148
call $~lib/builtins/abort
11491149
unreachable
@@ -3050,7 +3050,7 @@
30503050
if
30513051
i32.const 0
30523052
i32.const 32
3053-
i32.const 593
3053+
i32.const 589
30543054
i32.const 2
30553055
call $~lib/builtins/abort
30563056
unreachable

tests/compiler/rc/optimize.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -957,7 +957,7 @@
957957
if
958958
i32.const 0
959959
i32.const 80
960-
i32.const 569
960+
i32.const 565
961961
i32.const 2
962962
call $~lib/builtins/abort
963963
unreachable
@@ -1614,7 +1614,7 @@
16141614
if
16151615
i32.const 0
16161616
i32.const 80
1617-
i32.const 593
1617+
i32.const 589
16181618
i32.const 2
16191619
call $~lib/builtins/abort
16201620
unreachable

tests/compiler/rc/optimize.untouched.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,7 +1238,7 @@
12381238
if
12391239
i32.const 0
12401240
i32.const 80
1241-
i32.const 569
1241+
i32.const 565
12421242
i32.const 2
12431243
call $~lib/builtins/abort
12441244
unreachable
@@ -3088,7 +3088,7 @@
30883088
if
30893089
i32.const 0
30903090
i32.const 80
3091-
i32.const 593
3091+
i32.const 589
30923092
i32.const 2
30933093
call $~lib/builtins/abort
30943094
unreachable

tests/compiler/rc/rereturn.optimized.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -866,7 +866,7 @@
866866
if
867867
i32.const 0
868868
i32.const 32
869-
i32.const 569
869+
i32.const 565
870870
i32.const 2
871871
call $~lib/builtins/abort
872872
unreachable
@@ -1564,7 +1564,7 @@
15641564
if
15651565
i32.const 0
15661566
i32.const 32
1567-
i32.const 593
1567+
i32.const 589
15681568
i32.const 2
15691569
call $~lib/builtins/abort
15701570
unreachable

0 commit comments

Comments
 (0)