Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

5 changed files:

Changes:

  • changelog.d/fix-compacting-gc-ap-27434
    1
    +section: rts
    
    2
    +synopsis: Fix "unknown/strange object 24 crash" in compacting GC
    
    3
    +issues: #27434
    
    4
    +mrs: !16261
    
    5
    +
    
    6
    +description {
    
    7
    +Fix a crash in the compacting garbage collector when collecting large
    
    8
    +function-application thunks. Affected programs crashed with an internal error
    
    9
    +of the form "update_fwd_large: unknown/strange object 24" when run with the
    
    10
    +compacting GC (``+RTS -c``).
    
    11
    +}

  • rts/sm/Compact.c
    ... ... @@ -622,6 +622,10 @@ update_fwd_large( bdescr *bd )
    622 622
             thread_PAP((StgPAP *)p);
    
    623 623
             continue;
    
    624 624
     
    
    625
    +    case AP:
    
    626
    +        thread_AP((StgAP *)p);
    
    627
    +        continue;
    
    628
    +
    
    625 629
         case TREC_CHUNK:
    
    626 630
         {
    
    627 631
             StgTRecChunk *tc = (StgTRecChunk *)p;
    

  • testsuite/tests/rts/T27434.hs
    1
    +
    
    2
    +-- This test when run under GHCi bytecode creates an AP closure whose size
    
    3
    +-- exceeds LARGE_OBJECT_THRESHOLD. The compacting GC didn't handle these.
    
    4
    +
    
    5
    +module Main where
    
    6
    +
    
    7
    +import System.Mem (performMajorGC)
    
    8
    +import Control.Monad (forM_)
    
    9
    +import Data.IORef
    
    10
    +
    
    11
    +data Box = Box Int
    
    12
    +
    
    13
    +{-# NOINLINE bigfun #-}
    
    14
    +bigfun :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> Int
    
    15
    +bigfun a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25 a26 a27 a28 a29 a30 a31 a32 a33 a34 a35 a36 a37 a38 a39 a40 a41 a42 a43 a44 a45 a46 a47 a48 a49 a50 a51 a52 a53 a54 a55 a56 a57 a58 a59 a60 a61 a62 a63 a64 a65 a66 a67 a68 a69 a70 a71 a72 a73 a74 a75 a76 a77 a78 a79 a80 a81 a82 a83 a84 a85 a86 a87 a88 a89 a90 a91 a92 a93 a94 a95 a96 a97 a98 a99 a100 a101 a102 a103 a104 a105 a106 a107 a108 a109 a110 a111 a112 a113 a114 a115 a116 a117 a118 a119 a120 a121 a122 a123 a124 a125 a126 a127 a128 a129 a130 a131 a132 a133 a134 a135 a136 a137 a138 a139 a140 a141 a142 a143 a144 a145 a146 a147 a148 a149 a150 a151 a152 a153 a154 a155 a156 a157 a158 a159 a160 a161 a162 a163 a164 a165 a166 a167 a168 a169 a170 a171 a172 a173 a174 a175 a176 a177 a178 a179 a180 a181 a182 a183 a184 a185 a186 a187 a188 a189 a190 a191 a192 a193 a194 a195 a196 a197 a198 a199 a200 a201 a202 a203 a204 a205 a206 a207 a208 a209 a210 a211 a212 a213 a214 a215 a216 a217 a218 a219 a220 a221 a222 a223 a224 a225 a226 a227 a228 a229 a230 a231 a232 a233 a234 a235 a236 a237 a238 a239 a240 a241 a242 a243 a244 a245 a246 a247 a248 a249 a250 a251 a252 a253 a254 a255 a256 a257 a258 a259 a260 a261 a262 a263 a264 a265 a266 a267 a268 a269 a270 a271 a272 a273 a274 a275 a276 a277 a278 a279 a280 a281 a282 a283 a284 a285 a286 a287 a288 a289 a290 a291 a292 a293 a294 a295 a296 a297 a298 a299 a300 a301 a302 a303 a304 a305 a306 a307 a308 a309 a310 a311 a312 a313 a314 a315 a316 a317 a318 a319 a320 a321 a322 a323 a324 a325 a326 a327 a328 a329 a330 a331 a332 a333 a334 a335 a336 a337 a338 a339 a340 a341 a342 a343 a344 a345 a346 a347 a348 a349 a350 a351 a352 a353 a354 a355 a356 a357 a358 a359 a360 a361 a362 a363 a364 a365 a366 a367 a368 a369 a370 a371 a372 a373 a374 a375 a376 a377 a378 a379 a380 a381 a382 a383 a384 a385 a386 a387 a388 a389 a390 a391 a392 a393 a394 a395 a396 a397 a398 a399 a400 a401 a402 a403 a404 a405 a406 a407 a408 a409 a410 a411 a412 a413 a414 a415 a416 a417 a418 a419 a420 a421 a422 a423 a424 a425 a426 a427 a428 a429 a430 a431 a432 a433 a434 a435 a436 a437 a438 a439 a440 a441 a442 a443 a444 a445 a446 a447 a448 a449 a450 a451 a452 a453 a454 a455 a456 a457 a458 a459 a460 a461 a462 a463 a464 a465 a466 a467 a468 a469 a470 a471 a472 a473 a474 a475 a476 a477 a478 a479 a480 a481 a482 a483 a484 a485 a486 a487 a488 a489 a490 a491 a492 a493 a494 a495 a496 a497 a498 a499 = a0+a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+a20+a21+a22+a23+a24+a25+a26+a27+a28+a29+a30+a31+a32+a33+a34+a35+a36+a37+a38+a39+a40+a41+a42+a43+a44+a45+a46+a47+a48+a49+a50+a51+a52+a53+a54+a55+a56+a57+a58+a59+a60+a61+a62+a63+a64+a65+a66+a67+a68+a69+a70+a71+a72+a73+a74+a75+a76+a77+a78+a79+a80+a81+a82+a83+a84+a85+a86+a87+a88+a89+a90+a91+a92+a93+a94+a95+a96+a97+a98+a99+a100+a101+a102+a103+a104+a105+a106+a107+a108+a109+a110+a111+a112+a113+a114+a115+a116+a117+a118+a119+a120+a121+a122+a123+a124+a125+a126+a127+a128+a129+a130+a131+a132+a133+a134+a135+a136+a137+a138+a139+a140+a141+a142+a143+a144+a145+a146+a147+a148+a149+a150+a151+a152+a153+a154+a155+a156+a157+a158+a159+a160+a161+a162+a163+a164+a165+a166+a167+a168+a169+a170+a171+a172+a173+a174+a175+a176+a177+a178+a179+a180+a181+a182+a183+a184+a185+a186+a187+a188+a189+a190+a191+a192+a193+a194+a195+a196+a197+a198+a199+a200+a201+a202+a203+a204+a205+a206+a207+a208+a209+a210+a211+a212+a213+a214+a215+a216+a217+a218+a219+a220+a221+a222+a223+a224+a225+a226+a227+a228+a229+a230+a231+a232+a233+a234+a235+a236+a237+a238+a239+a240+a241+a242+a243+a244+a245+a246+a247+a248+a249+a250+a251+a252+a253+a254+a255+a256+a257+a258+a259+a260+a261+a262+a263+a264+a265+a266+a267+a268+a269+a270+a271+a272+a273+a274+a275+a276+a277+a278+a279+a280+a281+a282+a283+a284+a285+a286+a287+a288+a289+a290+a291+a292+a293+a294+a295+a296+a297+a298+a299+a300+a301+a302+a303+a304+a305+a306+a307+a308+a309+a310+a311+a312+a313+a314+a315+a316+a317+a318+a319+a320+a321+a322+a323+a324+a325+a326+a327+a328+a329+a330+a331+a332+a333+a334+a335+a336+a337+a338+a339+a340+a341+a342+a343+a344+a345+a346+a347+a348+a349+a350+a351+a352+a353+a354+a355+a356+a357+a358+a359+a360+a361+a362+a363+a364+a365+a366+a367+a368+a369+a370+a371+a372+a373+a374+a375+a376+a377+a378+a379+a380+a381+a382+a383+a384+a385+a386+a387+a388+a389+a390+a391+a392+a393+a394+a395+a396+a397+a398+a399+a400+a401+a402+a403+a404+a405+a406+a407+a408+a409+a410+a411+a412+a413+a414+a415+a416+a417+a418+a419+a420+a421+a422+a423+a424+a425+a426+a427+a428+a429+a430+a431+a432+a433+a434+a435+a436+a437+a438+a439+a440+a441+a442+a443+a444+a445+a446+a447+a448+a449+a450+a451+a452+a453+a454+a455+a456+a457+a458+a459+a460+a461+a462+a463+a464+a465+a466+a467+a468+a469+a470+a471+a472+a473+a474+a475+a476+a477+a478+a479+a480+a481+a482+a483+a484+a485+a486+a487+a488+a489+a490+a491+a492+a493+a494+a495+a496+a497+a498+a499
    
    16
    +
    
    17
    +{-# NOINLINE mkBox #-}
    
    18
    +mkBox :: Int -> Box
    
    19
    +mkBox seed =
    
    20
    +  let v0 = seed + 0 in
    
    21
    +  let v1 = seed + 1 in
    
    22
    +  let v2 = seed + 2 in
    
    23
    +  let v3 = seed + 3 in
    
    24
    +  let v4 = seed + 4 in
    
    25
    +  let v5 = seed + 5 in
    
    26
    +  let v6 = seed + 6 in
    
    27
    +  let v7 = seed + 7 in
    
    28
    +  let v8 = seed + 8 in
    
    29
    +  let v9 = seed + 9 in
    
    30
    +  let v10 = seed + 10 in
    
    31
    +  let v11 = seed + 11 in
    
    32
    +  let v12 = seed + 12 in
    
    33
    +  let v13 = seed + 13 in
    
    34
    +  let v14 = seed + 14 in
    
    35
    +  let v15 = seed + 15 in
    
    36
    +  let v16 = seed + 16 in
    
    37
    +  let v17 = seed + 17 in
    
    38
    +  let v18 = seed + 18 in
    
    39
    +  let v19 = seed + 19 in
    
    40
    +  let v20 = seed + 20 in
    
    41
    +  let v21 = seed + 21 in
    
    42
    +  let v22 = seed + 22 in
    
    43
    +  let v23 = seed + 23 in
    
    44
    +  let v24 = seed + 24 in
    
    45
    +  let v25 = seed + 25 in
    
    46
    +  let v26 = seed + 26 in
    
    47
    +  let v27 = seed + 27 in
    
    48
    +  let v28 = seed + 28 in
    
    49
    +  let v29 = seed + 29 in
    
    50
    +  let v30 = seed + 30 in
    
    51
    +  let v31 = seed + 31 in
    
    52
    +  let v32 = seed + 32 in
    
    53
    +  let v33 = seed + 33 in
    
    54
    +  let v34 = seed + 34 in
    
    55
    +  let v35 = seed + 35 in
    
    56
    +  let v36 = seed + 36 in
    
    57
    +  let v37 = seed + 37 in
    
    58
    +  let v38 = seed + 38 in
    
    59
    +  let v39 = seed + 39 in
    
    60
    +  let v40 = seed + 40 in
    
    61
    +  let v41 = seed + 41 in
    
    62
    +  let v42 = seed + 42 in
    
    63
    +  let v43 = seed + 43 in
    
    64
    +  let v44 = seed + 44 in
    
    65
    +  let v45 = seed + 45 in
    
    66
    +  let v46 = seed + 46 in
    
    67
    +  let v47 = seed + 47 in
    
    68
    +  let v48 = seed + 48 in
    
    69
    +  let v49 = seed + 49 in
    
    70
    +  let v50 = seed + 50 in
    
    71
    +  let v51 = seed + 51 in
    
    72
    +  let v52 = seed + 52 in
    
    73
    +  let v53 = seed + 53 in
    
    74
    +  let v54 = seed + 54 in
    
    75
    +  let v55 = seed + 55 in
    
    76
    +  let v56 = seed + 56 in
    
    77
    +  let v57 = seed + 57 in
    
    78
    +  let v58 = seed + 58 in
    
    79
    +  let v59 = seed + 59 in
    
    80
    +  let v60 = seed + 60 in
    
    81
    +  let v61 = seed + 61 in
    
    82
    +  let v62 = seed + 62 in
    
    83
    +  let v63 = seed + 63 in
    
    84
    +  let v64 = seed + 64 in
    
    85
    +  let v65 = seed + 65 in
    
    86
    +  let v66 = seed + 66 in
    
    87
    +  let v67 = seed + 67 in
    
    88
    +  let v68 = seed + 68 in
    
    89
    +  let v69 = seed + 69 in
    
    90
    +  let v70 = seed + 70 in
    
    91
    +  let v71 = seed + 71 in
    
    92
    +  let v72 = seed + 72 in
    
    93
    +  let v73 = seed + 73 in
    
    94
    +  let v74 = seed + 74 in
    
    95
    +  let v75 = seed + 75 in
    
    96
    +  let v76 = seed + 76 in
    
    97
    +  let v77 = seed + 77 in
    
    98
    +  let v78 = seed + 78 in
    
    99
    +  let v79 = seed + 79 in
    
    100
    +  let v80 = seed + 80 in
    
    101
    +  let v81 = seed + 81 in
    
    102
    +  let v82 = seed + 82 in
    
    103
    +  let v83 = seed + 83 in
    
    104
    +  let v84 = seed + 84 in
    
    105
    +  let v85 = seed + 85 in
    
    106
    +  let v86 = seed + 86 in
    
    107
    +  let v87 = seed + 87 in
    
    108
    +  let v88 = seed + 88 in
    
    109
    +  let v89 = seed + 89 in
    
    110
    +  let v90 = seed + 90 in
    
    111
    +  let v91 = seed + 91 in
    
    112
    +  let v92 = seed + 92 in
    
    113
    +  let v93 = seed + 93 in
    
    114
    +  let v94 = seed + 94 in
    
    115
    +  let v95 = seed + 95 in
    
    116
    +  let v96 = seed + 96 in
    
    117
    +  let v97 = seed + 97 in
    
    118
    +  let v98 = seed + 98 in
    
    119
    +  let v99 = seed + 99 in
    
    120
    +  let v100 = seed + 100 in
    
    121
    +  let v101 = seed + 101 in
    
    122
    +  let v102 = seed + 102 in
    
    123
    +  let v103 = seed + 103 in
    
    124
    +  let v104 = seed + 104 in
    
    125
    +  let v105 = seed + 105 in
    
    126
    +  let v106 = seed + 106 in
    
    127
    +  let v107 = seed + 107 in
    
    128
    +  let v108 = seed + 108 in
    
    129
    +  let v109 = seed + 109 in
    
    130
    +  let v110 = seed + 110 in
    
    131
    +  let v111 = seed + 111 in
    
    132
    +  let v112 = seed + 112 in
    
    133
    +  let v113 = seed + 113 in
    
    134
    +  let v114 = seed + 114 in
    
    135
    +  let v115 = seed + 115 in
    
    136
    +  let v116 = seed + 116 in
    
    137
    +  let v117 = seed + 117 in
    
    138
    +  let v118 = seed + 118 in
    
    139
    +  let v119 = seed + 119 in
    
    140
    +  let v120 = seed + 120 in
    
    141
    +  let v121 = seed + 121 in
    
    142
    +  let v122 = seed + 122 in
    
    143
    +  let v123 = seed + 123 in
    
    144
    +  let v124 = seed + 124 in
    
    145
    +  let v125 = seed + 125 in
    
    146
    +  let v126 = seed + 126 in
    
    147
    +  let v127 = seed + 127 in
    
    148
    +  let v128 = seed + 128 in
    
    149
    +  let v129 = seed + 129 in
    
    150
    +  let v130 = seed + 130 in
    
    151
    +  let v131 = seed + 131 in
    
    152
    +  let v132 = seed + 132 in
    
    153
    +  let v133 = seed + 133 in
    
    154
    +  let v134 = seed + 134 in
    
    155
    +  let v135 = seed + 135 in
    
    156
    +  let v136 = seed + 136 in
    
    157
    +  let v137 = seed + 137 in
    
    158
    +  let v138 = seed + 138 in
    
    159
    +  let v139 = seed + 139 in
    
    160
    +  let v140 = seed + 140 in
    
    161
    +  let v141 = seed + 141 in
    
    162
    +  let v142 = seed + 142 in
    
    163
    +  let v143 = seed + 143 in
    
    164
    +  let v144 = seed + 144 in
    
    165
    +  let v145 = seed + 145 in
    
    166
    +  let v146 = seed + 146 in
    
    167
    +  let v147 = seed + 147 in
    
    168
    +  let v148 = seed + 148 in
    
    169
    +  let v149 = seed + 149 in
    
    170
    +  let v150 = seed + 150 in
    
    171
    +  let v151 = seed + 151 in
    
    172
    +  let v152 = seed + 152 in
    
    173
    +  let v153 = seed + 153 in
    
    174
    +  let v154 = seed + 154 in
    
    175
    +  let v155 = seed + 155 in
    
    176
    +  let v156 = seed + 156 in
    
    177
    +  let v157 = seed + 157 in
    
    178
    +  let v158 = seed + 158 in
    
    179
    +  let v159 = seed + 159 in
    
    180
    +  let v160 = seed + 160 in
    
    181
    +  let v161 = seed + 161 in
    
    182
    +  let v162 = seed + 162 in
    
    183
    +  let v163 = seed + 163 in
    
    184
    +  let v164 = seed + 164 in
    
    185
    +  let v165 = seed + 165 in
    
    186
    +  let v166 = seed + 166 in
    
    187
    +  let v167 = seed + 167 in
    
    188
    +  let v168 = seed + 168 in
    
    189
    +  let v169 = seed + 169 in
    
    190
    +  let v170 = seed + 170 in
    
    191
    +  let v171 = seed + 171 in
    
    192
    +  let v172 = seed + 172 in
    
    193
    +  let v173 = seed + 173 in
    
    194
    +  let v174 = seed + 174 in
    
    195
    +  let v175 = seed + 175 in
    
    196
    +  let v176 = seed + 176 in
    
    197
    +  let v177 = seed + 177 in
    
    198
    +  let v178 = seed + 178 in
    
    199
    +  let v179 = seed + 179 in
    
    200
    +  let v180 = seed + 180 in
    
    201
    +  let v181 = seed + 181 in
    
    202
    +  let v182 = seed + 182 in
    
    203
    +  let v183 = seed + 183 in
    
    204
    +  let v184 = seed + 184 in
    
    205
    +  let v185 = seed + 185 in
    
    206
    +  let v186 = seed + 186 in
    
    207
    +  let v187 = seed + 187 in
    
    208
    +  let v188 = seed + 188 in
    
    209
    +  let v189 = seed + 189 in
    
    210
    +  let v190 = seed + 190 in
    
    211
    +  let v191 = seed + 191 in
    
    212
    +  let v192 = seed + 192 in
    
    213
    +  let v193 = seed + 193 in
    
    214
    +  let v194 = seed + 194 in
    
    215
    +  let v195 = seed + 195 in
    
    216
    +  let v196 = seed + 196 in
    
    217
    +  let v197 = seed + 197 in
    
    218
    +  let v198 = seed + 198 in
    
    219
    +  let v199 = seed + 199 in
    
    220
    +  let v200 = seed + 200 in
    
    221
    +  let v201 = seed + 201 in
    
    222
    +  let v202 = seed + 202 in
    
    223
    +  let v203 = seed + 203 in
    
    224
    +  let v204 = seed + 204 in
    
    225
    +  let v205 = seed + 205 in
    
    226
    +  let v206 = seed + 206 in
    
    227
    +  let v207 = seed + 207 in
    
    228
    +  let v208 = seed + 208 in
    
    229
    +  let v209 = seed + 209 in
    
    230
    +  let v210 = seed + 210 in
    
    231
    +  let v211 = seed + 211 in
    
    232
    +  let v212 = seed + 212 in
    
    233
    +  let v213 = seed + 213 in
    
    234
    +  let v214 = seed + 214 in
    
    235
    +  let v215 = seed + 215 in
    
    236
    +  let v216 = seed + 216 in
    
    237
    +  let v217 = seed + 217 in
    
    238
    +  let v218 = seed + 218 in
    
    239
    +  let v219 = seed + 219 in
    
    240
    +  let v220 = seed + 220 in
    
    241
    +  let v221 = seed + 221 in
    
    242
    +  let v222 = seed + 222 in
    
    243
    +  let v223 = seed + 223 in
    
    244
    +  let v224 = seed + 224 in
    
    245
    +  let v225 = seed + 225 in
    
    246
    +  let v226 = seed + 226 in
    
    247
    +  let v227 = seed + 227 in
    
    248
    +  let v228 = seed + 228 in
    
    249
    +  let v229 = seed + 229 in
    
    250
    +  let v230 = seed + 230 in
    
    251
    +  let v231 = seed + 231 in
    
    252
    +  let v232 = seed + 232 in
    
    253
    +  let v233 = seed + 233 in
    
    254
    +  let v234 = seed + 234 in
    
    255
    +  let v235 = seed + 235 in
    
    256
    +  let v236 = seed + 236 in
    
    257
    +  let v237 = seed + 237 in
    
    258
    +  let v238 = seed + 238 in
    
    259
    +  let v239 = seed + 239 in
    
    260
    +  let v240 = seed + 240 in
    
    261
    +  let v241 = seed + 241 in
    
    262
    +  let v242 = seed + 242 in
    
    263
    +  let v243 = seed + 243 in
    
    264
    +  let v244 = seed + 244 in
    
    265
    +  let v245 = seed + 245 in
    
    266
    +  let v246 = seed + 246 in
    
    267
    +  let v247 = seed + 247 in
    
    268
    +  let v248 = seed + 248 in
    
    269
    +  let v249 = seed + 249 in
    
    270
    +  let v250 = seed + 250 in
    
    271
    +  let v251 = seed + 251 in
    
    272
    +  let v252 = seed + 252 in
    
    273
    +  let v253 = seed + 253 in
    
    274
    +  let v254 = seed + 254 in
    
    275
    +  let v255 = seed + 255 in
    
    276
    +  let v256 = seed + 256 in
    
    277
    +  let v257 = seed + 257 in
    
    278
    +  let v258 = seed + 258 in
    
    279
    +  let v259 = seed + 259 in
    
    280
    +  let v260 = seed + 260 in
    
    281
    +  let v261 = seed + 261 in
    
    282
    +  let v262 = seed + 262 in
    
    283
    +  let v263 = seed + 263 in
    
    284
    +  let v264 = seed + 264 in
    
    285
    +  let v265 = seed + 265 in
    
    286
    +  let v266 = seed + 266 in
    
    287
    +  let v267 = seed + 267 in
    
    288
    +  let v268 = seed + 268 in
    
    289
    +  let v269 = seed + 269 in
    
    290
    +  let v270 = seed + 270 in
    
    291
    +  let v271 = seed + 271 in
    
    292
    +  let v272 = seed + 272 in
    
    293
    +  let v273 = seed + 273 in
    
    294
    +  let v274 = seed + 274 in
    
    295
    +  let v275 = seed + 275 in
    
    296
    +  let v276 = seed + 276 in
    
    297
    +  let v277 = seed + 277 in
    
    298
    +  let v278 = seed + 278 in
    
    299
    +  let v279 = seed + 279 in
    
    300
    +  let v280 = seed + 280 in
    
    301
    +  let v281 = seed + 281 in
    
    302
    +  let v282 = seed + 282 in
    
    303
    +  let v283 = seed + 283 in
    
    304
    +  let v284 = seed + 284 in
    
    305
    +  let v285 = seed + 285 in
    
    306
    +  let v286 = seed + 286 in
    
    307
    +  let v287 = seed + 287 in
    
    308
    +  let v288 = seed + 288 in
    
    309
    +  let v289 = seed + 289 in
    
    310
    +  let v290 = seed + 290 in
    
    311
    +  let v291 = seed + 291 in
    
    312
    +  let v292 = seed + 292 in
    
    313
    +  let v293 = seed + 293 in
    
    314
    +  let v294 = seed + 294 in
    
    315
    +  let v295 = seed + 295 in
    
    316
    +  let v296 = seed + 296 in
    
    317
    +  let v297 = seed + 297 in
    
    318
    +  let v298 = seed + 298 in
    
    319
    +  let v299 = seed + 299 in
    
    320
    +  let v300 = seed + 300 in
    
    321
    +  let v301 = seed + 301 in
    
    322
    +  let v302 = seed + 302 in
    
    323
    +  let v303 = seed + 303 in
    
    324
    +  let v304 = seed + 304 in
    
    325
    +  let v305 = seed + 305 in
    
    326
    +  let v306 = seed + 306 in
    
    327
    +  let v307 = seed + 307 in
    
    328
    +  let v308 = seed + 308 in
    
    329
    +  let v309 = seed + 309 in
    
    330
    +  let v310 = seed + 310 in
    
    331
    +  let v311 = seed + 311 in
    
    332
    +  let v312 = seed + 312 in
    
    333
    +  let v313 = seed + 313 in
    
    334
    +  let v314 = seed + 314 in
    
    335
    +  let v315 = seed + 315 in
    
    336
    +  let v316 = seed + 316 in
    
    337
    +  let v317 = seed + 317 in
    
    338
    +  let v318 = seed + 318 in
    
    339
    +  let v319 = seed + 319 in
    
    340
    +  let v320 = seed + 320 in
    
    341
    +  let v321 = seed + 321 in
    
    342
    +  let v322 = seed + 322 in
    
    343
    +  let v323 = seed + 323 in
    
    344
    +  let v324 = seed + 324 in
    
    345
    +  let v325 = seed + 325 in
    
    346
    +  let v326 = seed + 326 in
    
    347
    +  let v327 = seed + 327 in
    
    348
    +  let v328 = seed + 328 in
    
    349
    +  let v329 = seed + 329 in
    
    350
    +  let v330 = seed + 330 in
    
    351
    +  let v331 = seed + 331 in
    
    352
    +  let v332 = seed + 332 in
    
    353
    +  let v333 = seed + 333 in
    
    354
    +  let v334 = seed + 334 in
    
    355
    +  let v335 = seed + 335 in
    
    356
    +  let v336 = seed + 336 in
    
    357
    +  let v337 = seed + 337 in
    
    358
    +  let v338 = seed + 338 in
    
    359
    +  let v339 = seed + 339 in
    
    360
    +  let v340 = seed + 340 in
    
    361
    +  let v341 = seed + 341 in
    
    362
    +  let v342 = seed + 342 in
    
    363
    +  let v343 = seed + 343 in
    
    364
    +  let v344 = seed + 344 in
    
    365
    +  let v345 = seed + 345 in
    
    366
    +  let v346 = seed + 346 in
    
    367
    +  let v347 = seed + 347 in
    
    368
    +  let v348 = seed + 348 in
    
    369
    +  let v349 = seed + 349 in
    
    370
    +  let v350 = seed + 350 in
    
    371
    +  let v351 = seed + 351 in
    
    372
    +  let v352 = seed + 352 in
    
    373
    +  let v353 = seed + 353 in
    
    374
    +  let v354 = seed + 354 in
    
    375
    +  let v355 = seed + 355 in
    
    376
    +  let v356 = seed + 356 in
    
    377
    +  let v357 = seed + 357 in
    
    378
    +  let v358 = seed + 358 in
    
    379
    +  let v359 = seed + 359 in
    
    380
    +  let v360 = seed + 360 in
    
    381
    +  let v361 = seed + 361 in
    
    382
    +  let v362 = seed + 362 in
    
    383
    +  let v363 = seed + 363 in
    
    384
    +  let v364 = seed + 364 in
    
    385
    +  let v365 = seed + 365 in
    
    386
    +  let v366 = seed + 366 in
    
    387
    +  let v367 = seed + 367 in
    
    388
    +  let v368 = seed + 368 in
    
    389
    +  let v369 = seed + 369 in
    
    390
    +  let v370 = seed + 370 in
    
    391
    +  let v371 = seed + 371 in
    
    392
    +  let v372 = seed + 372 in
    
    393
    +  let v373 = seed + 373 in
    
    394
    +  let v374 = seed + 374 in
    
    395
    +  let v375 = seed + 375 in
    
    396
    +  let v376 = seed + 376 in
    
    397
    +  let v377 = seed + 377 in
    
    398
    +  let v378 = seed + 378 in
    
    399
    +  let v379 = seed + 379 in
    
    400
    +  let v380 = seed + 380 in
    
    401
    +  let v381 = seed + 381 in
    
    402
    +  let v382 = seed + 382 in
    
    403
    +  let v383 = seed + 383 in
    
    404
    +  let v384 = seed + 384 in
    
    405
    +  let v385 = seed + 385 in
    
    406
    +  let v386 = seed + 386 in
    
    407
    +  let v387 = seed + 387 in
    
    408
    +  let v388 = seed + 388 in
    
    409
    +  let v389 = seed + 389 in
    
    410
    +  let v390 = seed + 390 in
    
    411
    +  let v391 = seed + 391 in
    
    412
    +  let v392 = seed + 392 in
    
    413
    +  let v393 = seed + 393 in
    
    414
    +  let v394 = seed + 394 in
    
    415
    +  let v395 = seed + 395 in
    
    416
    +  let v396 = seed + 396 in
    
    417
    +  let v397 = seed + 397 in
    
    418
    +  let v398 = seed + 398 in
    
    419
    +  let v399 = seed + 399 in
    
    420
    +  let v400 = seed + 400 in
    
    421
    +  let v401 = seed + 401 in
    
    422
    +  let v402 = seed + 402 in
    
    423
    +  let v403 = seed + 403 in
    
    424
    +  let v404 = seed + 404 in
    
    425
    +  let v405 = seed + 405 in
    
    426
    +  let v406 = seed + 406 in
    
    427
    +  let v407 = seed + 407 in
    
    428
    +  let v408 = seed + 408 in
    
    429
    +  let v409 = seed + 409 in
    
    430
    +  let v410 = seed + 410 in
    
    431
    +  let v411 = seed + 411 in
    
    432
    +  let v412 = seed + 412 in
    
    433
    +  let v413 = seed + 413 in
    
    434
    +  let v414 = seed + 414 in
    
    435
    +  let v415 = seed + 415 in
    
    436
    +  let v416 = seed + 416 in
    
    437
    +  let v417 = seed + 417 in
    
    438
    +  let v418 = seed + 418 in
    
    439
    +  let v419 = seed + 419 in
    
    440
    +  let v420 = seed + 420 in
    
    441
    +  let v421 = seed + 421 in
    
    442
    +  let v422 = seed + 422 in
    
    443
    +  let v423 = seed + 423 in
    
    444
    +  let v424 = seed + 424 in
    
    445
    +  let v425 = seed + 425 in
    
    446
    +  let v426 = seed + 426 in
    
    447
    +  let v427 = seed + 427 in
    
    448
    +  let v428 = seed + 428 in
    
    449
    +  let v429 = seed + 429 in
    
    450
    +  let v430 = seed + 430 in
    
    451
    +  let v431 = seed + 431 in
    
    452
    +  let v432 = seed + 432 in
    
    453
    +  let v433 = seed + 433 in
    
    454
    +  let v434 = seed + 434 in
    
    455
    +  let v435 = seed + 435 in
    
    456
    +  let v436 = seed + 436 in
    
    457
    +  let v437 = seed + 437 in
    
    458
    +  let v438 = seed + 438 in
    
    459
    +  let v439 = seed + 439 in
    
    460
    +  let v440 = seed + 440 in
    
    461
    +  let v441 = seed + 441 in
    
    462
    +  let v442 = seed + 442 in
    
    463
    +  let v443 = seed + 443 in
    
    464
    +  let v444 = seed + 444 in
    
    465
    +  let v445 = seed + 445 in
    
    466
    +  let v446 = seed + 446 in
    
    467
    +  let v447 = seed + 447 in
    
    468
    +  let v448 = seed + 448 in
    
    469
    +  let v449 = seed + 449 in
    
    470
    +  let v450 = seed + 450 in
    
    471
    +  let v451 = seed + 451 in
    
    472
    +  let v452 = seed + 452 in
    
    473
    +  let v453 = seed + 453 in
    
    474
    +  let v454 = seed + 454 in
    
    475
    +  let v455 = seed + 455 in
    
    476
    +  let v456 = seed + 456 in
    
    477
    +  let v457 = seed + 457 in
    
    478
    +  let v458 = seed + 458 in
    
    479
    +  let v459 = seed + 459 in
    
    480
    +  let v460 = seed + 460 in
    
    481
    +  let v461 = seed + 461 in
    
    482
    +  let v462 = seed + 462 in
    
    483
    +  let v463 = seed + 463 in
    
    484
    +  let v464 = seed + 464 in
    
    485
    +  let v465 = seed + 465 in
    
    486
    +  let v466 = seed + 466 in
    
    487
    +  let v467 = seed + 467 in
    
    488
    +  let v468 = seed + 468 in
    
    489
    +  let v469 = seed + 469 in
    
    490
    +  let v470 = seed + 470 in
    
    491
    +  let v471 = seed + 471 in
    
    492
    +  let v472 = seed + 472 in
    
    493
    +  let v473 = seed + 473 in
    
    494
    +  let v474 = seed + 474 in
    
    495
    +  let v475 = seed + 475 in
    
    496
    +  let v476 = seed + 476 in
    
    497
    +  let v477 = seed + 477 in
    
    498
    +  let v478 = seed + 478 in
    
    499
    +  let v479 = seed + 479 in
    
    500
    +  let v480 = seed + 480 in
    
    501
    +  let v481 = seed + 481 in
    
    502
    +  let v482 = seed + 482 in
    
    503
    +  let v483 = seed + 483 in
    
    504
    +  let v484 = seed + 484 in
    
    505
    +  let v485 = seed + 485 in
    
    506
    +  let v486 = seed + 486 in
    
    507
    +  let v487 = seed + 487 in
    
    508
    +  let v488 = seed + 488 in
    
    509
    +  let v489 = seed + 489 in
    
    510
    +  let v490 = seed + 490 in
    
    511
    +  let v491 = seed + 491 in
    
    512
    +  let v492 = seed + 492 in
    
    513
    +  let v493 = seed + 493 in
    
    514
    +  let v494 = seed + 494 in
    
    515
    +  let v495 = seed + 495 in
    
    516
    +  let v496 = seed + 496 in
    
    517
    +  let v497 = seed + 497 in
    
    518
    +  let v498 = seed + 498 in
    
    519
    +  let v499 = seed + 499 in
    
    520
    +  Box (bigfun v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 v251 v252 v253 v254 v255 v256 v257 v258 v259 v260 v261 v262 v263 v264 v265 v266 v267 v268 v269 v270 v271 v272 v273 v274 v275 v276 v277 v278 v279 v280 v281 v282 v283 v284 v285 v286 v287 v288 v289 v290 v291 v292 v293 v294 v295 v296 v297 v298 v299 v300 v301 v302 v303 v304 v305 v306 v307 v308 v309 v310 v311 v312 v313 v314 v315 v316 v317 v318 v319 v320 v321 v322 v323 v324 v325 v326 v327 v328 v329 v330 v331 v332 v333 v334 v335 v336 v337 v338 v339 v340 v341 v342 v343 v344 v345 v346 v347 v348 v349 v350 v351 v352 v353 v354 v355 v356 v357 v358 v359 v360 v361 v362 v363 v364 v365 v366 v367 v368 v369 v370 v371 v372 v373 v374 v375 v376 v377 v378 v379 v380 v381 v382 v383 v384 v385 v386 v387 v388 v389 v390 v391 v392 v393 v394 v395 v396 v397 v398 v399 v400 v401 v402 v403 v404 v405 v406 v407 v408 v409 v410 v411 v412 v413 v414 v415 v416 v417 v418 v419 v420 v421 v422 v423 v424 v425 v426 v427 v428 v429 v430 v431 v432 v433 v434 v435 v436 v437 v438 v439 v440 v441 v442 v443 v444 v445 v446 v447 v448 v449 v450 v451 v452 v453 v454 v455 v456 v457 v458 v459 v460 v461 v462 v463 v464 v465 v466 v467 v468 v469 v470 v471 v472 v473 v474 v475 v476 v477 v478 v479 v480 v481 v482 v483 v484 v485 v486 v487 v488 v489 v490 v491 v492 v493 v494 v495 v496 v497 v498 v499)
    
    521
    +
    
    522
    +main :: IO ()
    
    523
    +main = do
    
    524
    +  ref <- newIORef ([] :: [Box])
    
    525
    +  forM_ [1..100] $ \s -> do
    
    526
    +    let b = mkBox s
    
    527
    +    b `seq` modifyIORef' ref (b:)
    
    528
    +    performMajorGC
    
    529
    +  performMajorGC
    
    530
    +  bs <- readIORef ref
    
    531
    +  print (sum [ x | Box x <- bs ])

  • testsuite/tests/rts/T27434.stdout
    1
    +15000000

  • testsuite/tests/rts/all.T
    ... ... @@ -19,9 +19,8 @@ test('testmblockalloc',
    19 19
     # See bug #101, test requires +RTS -c (or equivalently +RTS -M<something>)
    
    20 20
     # only GHCi triggers the bug, but we run the test all ways for completeness.
    
    21 21
     test('bug1010',
    
    22
    -     # Non-moving GC doesn't support -c
    
    23
    -     omit_ways(['nonmoving', 'nonmoving_thr', 'nonmoving_thr_ghc']),
    
    24
    -     compile_and_run, ['+RTS -c -RTS'])
    
    22
    +     extra_ways(['compacting_gc']),
    
    23
    +     compile_and_run, [''])
    
    25 24
     
    
    26 25
     def normalise_address(str):
    
    27 26
         return re.sub('Access violation in generated code when reading [0]+',
    
    ... ... @@ -122,10 +121,8 @@ test('outofmem2',
    122 121
     
    
    123 122
     test('T2047',
    
    124 123
          [ignore_stdout,
    
    125
    -      extra_run_opts('+RTS -c -RTS'),
    
    126 124
           when(opsys('freebsd'), fragile(25751)),
    
    127
    -      # Non-moving collector doesn't support -c
    
    128
    -      omit_ways(['nonmoving', 'nonmoving_thr', 'nonmoving_thr_sanity', 'nonmoving_thr_ghc'])],
    
    125
    +      extra_ways(['compacting_gc'])],
    
    129 126
          compile_and_run, ['-package containers'])
    
    130 127
     
    
    131 128
     # Blackhole-detection test.
    
    ... ... @@ -449,14 +446,11 @@ test('T13832', [exit_code(1), req_ghc_with_threaded_rts], compile_and_run, ['-th
    449 446
     test('T13894', js_skip, compile_and_run, [''])
    
    450 447
     # this test fails with the profasm way on some machines but not others,
    
    451 448
     # so we just skip it.
    
    452
    -test('T14497', [omit_ways(['profasm']), multi_cpu_race], compile_and_run, ['-O'])
    
    453
    -# The issue in the above test also happened with compaction enabled.
    
    454
    -test('T14497-compact',
    
    455
    -               [ extra_files(['T14497.hs'])
    
    456
    -               , only_ways(['normal'])
    
    449
    +test('T14497', [ omit_ways(['profasm'])
    
    450
    +               , extra_ways(['compacting_gc'])
    
    457 451
                    , multi_cpu_race
    
    458
    -               , extra_run_opts('+RTS -c -RTS')
    
    459
    -               ] , compile_and_run, ['-O'])
    
    452
    +               ]
    
    453
    +               , compile_and_run, ['-O'])
    
    460 454
     test('T14695', [js_broken(22359), ignore_stderr], makefile_test, ['T14695'])
    
    461 455
     test('T14702', [ ignore_stdout
    
    462 456
                    , when(unregisterised(), skip)
    
    ... ... @@ -546,7 +540,7 @@ test('RestartEventLogging',
    546 540
          compile_and_run, ['RestartEventLogging_c.c'])
    
    547 541
     
    
    548 542
     test('T17088',
    
    549
    -     [only_ways(['normal']), extra_run_opts('+RTS -c -A256k -RTS')],
    
    543
    +     [extra_ways(['compacting_gc']), extra_run_opts('+RTS -A256k -RTS')],
    
    550 544
          compile_and_run, ['-rtsopts -O2'])
    
    551 545
     
    
    552 546
     test('T15427', js_broken(22374), compile_and_run, [''])
    
    ... ... @@ -687,3 +681,7 @@ test('ClosureTable',
    687 681
          ['-debug -O0 ClosureTable_c.c -I{top}/../rts -I{top}/../rts/include'])
    
    688 682
     
    
    689 683
     test('resizeMutableByteArrayInPlace', [req_cmm, extra_ways(['optasm', 'sanity']), only_ways(['optasm', 'sanity'])], compile_and_run, [''])
    
    684
    +
    
    685
    +test('T27434',
    
    686
    +     extra_ways(['compacting_gc']),
    
    687
    +     compile_and_run, [''])