1
0
mirror of https://github.com/golang/go synced 2024-11-24 06:50:17 -07:00
go/test/fixedbugs
Russ Cox b3932baba4 runtime: fix sudog leak
The SudoG used to sit on the stack, so it was cheap to allocated
and didn't need to be cleaned up when finished.

For the conversion to Go, we had to move sudog off the stack
for a few reasons, so we added a cache of recently used sudogs
to keep allocation cheap. But we didn't add any of the necessary
cleanup before adding a SudoG to the new cache, and so the cached
SudoGs had stale pointers inside them that have caused all sorts
of awful, hard to debug problems.

CL 155760043 made sure SudoG.elem is cleaned up.
CL 150520043 made sure SudoG.selectdone is cleaned up.

This CL makes sure SudoG.next, SudoG.prev, and SudoG.waitlink
are cleaned up. I should have done this when I did the other two
fields; instead I wasted a week tracking down a leak they caused.

A dangling SudoG.waitlink can point into a sudogcache list that
has been "forgotten" in order to let the GC collect it, but that
dangling .waitlink keeps the list from being collected.
And then the list holding the SudoG with the dangling waitlink
can find itself in the same situation, and so on. We end up
with lists of lists of unusable SudoGs that are still linked into
the object graph and never collected (given the right mix of
non-trivial selects and non-channel synchronization).

More details in golang.org/issue/9110.

Fixes #9110.

LGTM=r
R=r
CC=dvyukov, golang-codereviews, iant, khr
https://golang.org/cl/177870043
2014-11-16 16:44:45 -05:00
..
bug083.dir
bug088.dir
bug106.dir
bug133.dir
bug160.dir
bug191.dir
bug222.dir
bug248.dir
bug282.dir
bug302.dir
bug306.dir
bug313.dir
bug322.dir
bug324.dir
bug335.dir
bug345.dir
bug367.dir
bug369.dir
bug377.dir
bug382.dir
bug392.dir
bug396.dir
bug404.dir
bug407.dir
bug414.dir
bug415.dir
bug424.dir
bug437.dir
bug448.dir
bug460.dir
bug465.dir
bug466.dir
bug467.dir
bug468.dir
bug472.dir
bug478.dir
bug479.dir
bug480.dir
bug488.dir test: add test for confusion with dot imports 2014-07-20 10:28:51 -07:00
issue3552.dir
issue4252.dir
issue4326.dir
issue4370.dir
issue4510.dir
issue4590.dir
issue4879.dir
issue4932.dir
issue4964.dir
issue5105.dir
issue5125.dir
issue5259.dir
issue5260.dir
issue5291.dir
issue5470.dir
issue5614.dir
issue5755.dir
issue5910.dir
issue5957.dir
issue6295.dir
issue6513.dir
issue6789.dir
issue7023.dir
issue7648.dir cmd/gc: fix spurious "bad negated constant" for complex constants. 2014-04-01 02:55:38 -04:00
issue7995b.dir cmd/gc: correct handling of globals, func args, results 2014-05-15 15:34:53 -04:00
issue8060.dir cmd/gc: generate type alg after calling dowidth. 2014-09-15 18:24:16 +02:00
issue8280.dir cmd/gc: fix import of package with var func returning _ 2014-09-24 16:53:34 -04:00
bug000.go
bug002.go
bug003.go
bug004.go
bug005.go
bug006.go
bug007.go
bug008.go
bug009.go
bug010.go
bug011.go
bug012.go
bug013.go
bug014.go
bug015.go
bug016.go
bug017.go
bug020.go
bug021.go
bug022.go
bug023.go
bug024.go
bug026.go
bug027.go
bug028.go
bug030.go
bug031.go
bug035.go
bug037.go
bug039.go
bug040.go
bug045.go
bug046.go
bug047.go
bug048.go
bug049.go
bug050.go
bug051.go
bug052.go
bug053.go
bug054.go
bug055.go
bug056.go
bug057.go
bug058.go
bug059.go
bug060.go
bug061.go
bug062.go
bug063.go
bug064.go
bug065.go
bug066.go
bug067.go
bug068.go
bug069.go
bug070.go
bug071.go
bug072.go
bug073.go
bug074.go
bug075.go
bug076.go
bug077.go
bug078.go
bug080.go
bug081.go
bug082.go
bug083.go
bug084.go
bug085.go
bug086.go
bug087.go
bug088.go
bug089.go
bug090.go
bug091.go
bug092.go
bug093.go
bug094.go
bug096.go
bug097.go
bug098.go
bug099.go
bug101.go
bug102.go
bug103.go
bug104.go
bug106.go
bug107.go
bug108.go
bug109.go
bug110.go
bug111.go
bug112.go
bug113.go
bug114.go
bug115.go
bug116.go
bug117.go
bug118.go
bug119.go
bug120.go
bug121.go
bug122.go
bug123.go
bug126.go
bug127.go
bug128.go
bug129.go
bug130.go
bug131.go
bug132.go
bug133.go
bug135.go
bug136.go
bug137.go
bug139.go
bug140.go
bug141.go
bug142.go
bug143.go
bug144.go
bug145.go
bug146.go
bug147.go
bug148.go
bug149.go
bug150.go
bug151.go
bug152.go
bug154.go
bug155.go
bug156.go
bug157.go
bug158.go
bug159.go
bug160.go
bug161.go
bug163.go
bug164.go
bug165.go
bug167.go
bug168.go
bug169.go
bug170.go
bug171.go
bug172.go
bug173.go cmd/gc: implement 'for range x {' 2014-07-16 19:27:10 -04:00
bug174.go
bug175.go
bug176.go cmd/gc: suppress array index error caused by a previously reported error 2014-03-29 15:45:40 +01:00
bug177.go
bug178.go
bug179.go
bug180.go
bug181.go
bug182.go
bug183.go
bug184.go
bug185.go
bug186.go
bug187.go
bug188.go
bug189.go
bug190.go
bug191.go
bug192.go
bug193.go
bug194.go
bug195.go
bug196.go
bug197.go
bug198.go
bug199.go
bug200.go
bug201.go
bug202.go
bug203.go
bug204.go
bug205.go
bug206.go
bug206.out
bug207.go
bug208.go
bug209.go
bug211.go
bug212.go
bug213.go
bug214.go
bug215.go
bug216.go
bug217.go
bug218.go
bug219.go
bug221.go
bug222.go
bug223.go
bug224.go
bug225.go
bug227.go
bug228.go
bug229.go
bug230.go
bug231.go
bug232.go
bug233.go
bug234.go
bug235.go
bug236.go
bug237.go
bug238.go
bug239.go
bug240.go
bug241.go
bug242.go
bug243.go
bug244.go
bug245.go
bug246.go
bug247.go
bug248.go
bug249.go
bug250.go
bug251.go
bug252.go
bug253.go
bug254.go
bug255.go cmd/gc: say 'non-constant array bound' instead of 'invalid array bound' 2014-09-16 10:21:54 -04:00
bug256.go
bug257.go
bug258.go
bug259.go
bug260.go
bug261.go
bug262.go
bug263.go
bug264.go
bug265.go
bug266.go
bug267.go
bug269.go
bug271.go
bug272.go
bug273.go
bug274.go
bug275.go
bug276.go
bug277.go
bug278.go
bug279.go
bug280.go
bug281.go
bug282.go
bug283.go
bug284.go
bug285.go
bug286.go
bug287.go
bug288.go
bug289.go
bug290.go
bug291.go
bug292.go
bug293.go
bug294.go
bug295.go
bug296.go
bug297.go
bug298.go
bug299.go cmd/gc: drop parenthesization restriction for receiver types 2014-06-25 09:57:48 -04:00
bug300.go
bug301.go
bug302.go
bug303.go
bug304.go
bug305.go
bug306.go
bug307.go
bug308.go
bug309.go
bug311.go
bug312.go
bug313.go
bug314.go
bug315.go
bug316.go
bug317.go
bug318.go
bug319.go
bug320.go
bug321.go
bug322.go
bug323.go
bug324.go
bug325.go
bug326.go
bug327.go
bug328.go
bug328.out
bug329.go
bug330.go
bug331.go
bug332.go
bug333.go
bug334.go
bug335.go
bug336.go
bug337.go
bug338.go
bug339.go
bug340.go
bug341.go
bug342.go
bug343.go
bug344.go
bug345.go
bug346.go
bug347.go
bug348.go
bug349.go
bug350.go
bug351.go
bug352.go
bug353.go
bug354.go
bug355.go
bug356.go
bug357.go
bug358.go
bug361.go
bug362.go
bug363.go
bug364.go
bug365.go
bug366.go
bug367.go
bug368.go
bug369.go
bug370.go
bug371.go cmd/gc: disallow call of *T method using **T variable 2014-10-20 22:04:12 -04:00
bug372.go
bug373.go
bug374.go
bug375.go
bug376.go
bug377.go
bug378.go
bug379.go
bug380.go
bug381.go
bug382.go
bug383.go
bug384.go
bug385_32.go test: enable bug385_32 test on amd64p32. 2014-03-20 07:28:24 +01:00
bug385_64.go
bug386.go
bug387.go
bug388.go
bug389.go
bug390.go
bug391.go
bug392.go
bug393.go
bug394.go
bug396.go
bug397.go
bug398.go
bug399.go
bug401.go
bug402.go
bug403.go
bug404.go
bug405.go
bug406.go cmd/gc: implement 'for range x {' 2014-07-16 19:27:10 -04:00
bug407.go
bug409.go
bug409.out
bug410.go
bug411.go
bug412.go
bug413.go
bug414.go
bug415.go
bug416.go
bug417.go
bug418.go
bug419.go
bug420.go
bug421.go
bug422.go
bug423.go
bug424.go
bug425.go
bug426.go
bug427.go
bug428.go
bug429.go
bug430.go
bug431.go
bug432.go
bug433.go
bug434.go
bug435.go
bug436.go
bug437.go
bug438.go
bug439.go
bug440_32.go
bug440_64.go
bug441.go
bug442.go
bug443.go
bug444.go
bug445.go
bug446.go
bug447.go
bug448.go
bug449.go
bug450.go
bug451.go
bug452.go
bug453.go
bug454.go
bug455.go
bug456.go
bug457.go
bug458.go
bug459.go
bug460.go
bug461.go
bug462.go
bug463.go
bug464.go
bug465.go
bug466.go
bug467.go
bug468.go
bug470.go
bug471.go
bug472.go
bug473.go
bug474.go
bug475.go
bug476.go
bug477.go
bug478.go
bug479.go
bug480.go
bug481.go
bug482.go
bug483.go cmd/gc: record &x[0] as taking address of x, if x is an array 2014-02-15 20:01:15 -05:00
bug484.go cmd/gc: liveness-related bug fixes 2014-03-27 14:05:57 -04:00
bug485.go test: add test that gccgo compiled incorrectly 2014-05-06 09:01:38 -04:00
bug486.go test: add test for gccgo comment lexing failure 2014-07-08 14:09:35 -07:00
bug487.go test: add some tests for mismatches between call results and uses 2014-07-19 01:12:42 -07:00
bug488.go test: add test for confusion with dot imports 2014-07-20 10:28:51 -07:00
bug489.go test: add test for function type in function literal 2014-08-04 19:50:49 -07:00
bug490.go test: add another test case that gccgo crashed on 2014-08-08 10:43:44 -07:00
bug491.go cmd/gc: fix call order in array literal of slice literal of make chan 2014-09-30 12:48:47 -04:00
bug1515.go
issue887.go
issue1304.go cmd/gc: correct handling of globals, func args, results 2014-05-15 15:34:53 -04:00
issue2615.go
issue3552.go
issue3705.go
issue3783.go
issue3924.go
issue3925.go
issue4066.go
issue4085a.go
issue4085b.go
issue4097.go
issue4099.go
issue4162.go
issue4167.go
issue4232.go cmd/gc: emit error for out-of-bounds slice of constant string 2014-09-25 13:24:43 -04:00
issue4251.go
issue4252.go
issue4264.go
issue4283.go
issue4313.go
issue4316.go
issue4323.go
issue4326.go
issue4348.go
issue4353.go
issue4359.go
issue4370.go
issue4388.go runtime: use reflect.call during panic instead of newstackcall 2014-09-05 16:51:45 -04:00
issue4396a.go
issue4396b.go
issue4399.go
issue4405.go
issue4429.go
issue4448.go
issue4452.go
issue4458.go
issue4463.go
issue4468.go
issue4470.go
issue4495.go
issue4510.go
issue4517a.go
issue4517b.go
issue4517c.go
issue4517d.go
issue4518.go
issue4529.go
issue4545.go
issue4562.go
issue4585.go
issue4590.go
issue4610.go
issue4614.go
issue4618.go
issue4620.go
issue4654.go
issue4663.go
issue4667.go
issue4734.go
issue4748.go
issue4752.go
issue4776.go
issue4785.go
issue4813.go
issue4847.go
issue4879.go
issue4909a.go
issue4909b.go
issue4932.go
issue4964.go
issue5002.go
issue5056.go
issue5089.go
issue5105.go
issue5125.go
issue5162.go
issue5172.go
issue5231.go
issue5244.go
issue5259.go
issue5260.go
issue5291.go
issue5358.go
issue5470.go
issue5493.go
issue5515.go
issue5581.go
issue5607.go
issue5609.go
issue5614.go
issue5698.go
issue5704.go
issue5753.go
issue5755.go
issue5793.go cmd/gc: allow append and complex builtins to accept 2-result call expression as first argument. 2014-03-05 14:16:21 -05:00
issue5809.go
issue5820.go
issue5841.go
issue5856.go runtime: use reflect.call during panic instead of newstackcall 2014-09-05 16:51:45 -04:00
issue5910.go
issue5957.go
issue5963.go
issue6004.go
issue6036.go
issue6055.go
issue6131.go
issue6140.go
issue6247.go
issue6269.go
issue6295.go
issue6298.go
issue6399.go
issue6402.go cmd/gc: fix spurious 'use of untyped nil' error 2014-03-27 18:47:00 +01:00
issue6403.go cmd/gc: fix spurious 'const initializer is not a constant' error 2014-03-24 20:36:42 +01:00
issue6405.go cmd/gc: fix spurious 'not enough arguments to return' error 2014-03-14 16:42:42 +01:00
issue6406.go
issue6500.go cmd/gc: reject incorrect use of fallthrough. 2014-02-19 07:55:03 +01:00
issue6513.go
issue6572.go
issue6703a.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703b.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703c.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703d.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703e.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703f.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703g.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703h.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703i.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703j.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703k.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703l.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703m.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703n.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703o.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703p.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703q.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703r.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703s.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703t.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703u.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703v.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703w.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703x.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703y.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6703z.go cmd/gc: check for initialization cycles in method values 2014-10-14 19:12:10 -07:00
issue6789.go
issue6847.go cmd/gc: fix spurious type errors in walkselect. 2014-03-13 08:14:05 +01:00
issue6889.go cmd/gc: avoid confusing error message "ovf in mpaddxx" 2014-04-09 08:36:27 +02:00
issue6899.go
issue6899.out
issue6902.go cmd/gc: round floats with a large negative exponent towards zero 2014-03-24 10:10:29 -07:00
issue6964.go
issue7023.go
issue7044.go liblink: fix bad code generated for MOVFD/MOVDF when reg > 7 2014-03-11 14:04:44 -04:00
issue7050.go syscall: fix Write(nil) on NaCl 2014-05-20 11:38:34 -04:00
issue7083.go
issue7129.go cmd/gc: increase specificity of errors in function call context 2014-04-11 15:57:30 +02:00
issue7150.go cmd/gc: fix array index out of bounds error message 2014-02-19 11:29:36 -08:00
issue7153.go cmd/gc: suppress array index error caused by a previously reported error 2014-03-29 15:45:40 +01:00
issue7214.go cmd/gc: check duplicate keys in maps with interface{} key type 2014-04-04 16:46:23 +02:00
issue7223.go cmd/gc: diagnose "make([]T, non-integer)" correctly. 2014-02-23 16:31:48 -05:00
issue7272.go
issue7310.go cmd/gc: fix internal crash 2014-03-03 19:55:40 -05:00
issue7316.go cmd/gc: alias more variables during register allocation 2014-05-12 17:10:36 -04:00
issue7346.go cmd/gc: use a register to checknil constants. 2014-03-04 08:18:17 +01:00
issue7366.go cmd/gc: fix walkcompare bugs. 2014-02-24 19:51:59 +01:00
issue7405.go cmd/6g, cmd/8g: skip CONVNOP nodes in bgen. 2014-03-20 22:22:37 +01:00
issue7419.go cmd/gc: check exponent overflow and underflow in mparith 2014-03-19 05:48:00 +01:00
issue7525.go cmd/gc: fix error check for self-referential array type. 2014-03-17 20:26:19 -07:00
issue7538a.go cmd/gc: ignore blank (_) labels in label declarations 2014-04-09 08:34:17 +02:00
issue7538b.go cmd/gc: ignore blank (_) labels in label declarations 2014-04-09 08:34:17 +02:00
issue7547.go cmd/gc: compute size of keys & values before making map bucket 2014-04-04 12:58:19 -07:00
issue7550.go runtime: check that new slice cap doesn't overflow 2014-04-03 13:44:44 +11:00
issue7590.go test: add extra test case for issue 7590 2014-03-20 11:46:45 -07:00
issue7648.go cmd/gc: fix spurious "bad negated constant" for complex constants. 2014-04-01 02:55:38 -04:00
issue7675.go cmd/gc: fewer errors for wrong argument count 2014-04-16 22:42:09 -04:00
issue7690.go runtime: fix line number in first stack frame in printed stack trace 2014-10-29 15:14:24 -04:00
issue7742.go cmd/gc: fix typo in ordermapassign 2014-04-11 15:28:37 +02:00
issue7760.go cmd/gc: disallow pointer constants 2014-08-15 11:33:31 -07:00
issue7794.go cmd/gc: fix segfault in isgoconst. 2014-04-16 23:12:06 -04:00
issue7863.go test: expand issue7863 test 2014-05-27 21:53:39 -07:00
issue7867.go cmd/gc: don't give credit for NOPs during register allocation 2014-05-09 09:55:17 -07:00
issue7884.go test: test issue 7884 (already fixed) 2014-05-20 11:42:25 -04:00
issue7944.go cmd/gc: fix liveness vs regopt mismatch for input variables 2014-05-12 17:19:02 -04:00
issue7995.go cmd/gc: correct handling of globals, func args, results 2014-05-15 15:34:53 -04:00
issue7995b.go cmd/gc: correct handling of globals, func args, results 2014-05-15 15:34:53 -04:00
issue7996.go cmd/gc: fix duplicate map key check 2014-05-15 15:34:37 -04:00
issue7997.go cmd/gc: fix two select temporary bugs 2014-05-15 19:16:18 -04:00
issue7998.go cmd/gc: fix two select temporary bugs 2014-05-15 19:16:18 -04:00
issue8004.go runtime: make scan of pointer-in-interface same as scan of pointer 2014-05-15 15:53:36 -04:00
issue8011.go cmd/gc: fix <-<-expr 2014-05-19 15:08:04 -04:00
issue8017.go cmd/gc: don't walk static nodes generated by anylit. 2014-09-15 18:31:47 +02:00
issue8028.go cmd/gc: fix race compilation failure 'non-orig name' 2014-05-27 23:59:27 -04:00
issue8036.go cmd/6g: treat vardef-initialized fat variables as live at calls 2014-05-30 16:41:58 -04:00
issue8039.go cmd/gc: fix defer copy(x, <-c) 2014-05-27 23:59:06 -04:00
issue8047.go runtime: add test for issue 8047. 2014-06-11 20:34:46 -04:00
issue8047b.go runtime: fix defer of nil func 2014-06-12 16:34:36 -04:00
issue8048.go runtime: make continuation pc available to stack walk 2014-05-31 10:10:12 -04:00
issue8060.go cmd/gc: generate type alg after calling dowidth. 2014-09-15 18:24:16 +02:00
issue8073.go cmd/gc: fix conversion of runtime constant 2014-05-27 21:38:19 -04:00
issue8074.go test/fixedbugs: fix typo in comment 2014-06-29 20:34:35 +10:00
issue8076.go cmd/gc: fix infinite loop in nil check removal 2014-05-27 23:58:49 -04:00
issue8079.go test: add test for gccgo-specific issue 8079 2014-10-13 12:33:45 -07:00
issue8132.go runtime: fix correctness test at end of traceback 2014-06-01 13:57:46 -04:00
issue8139.go runtime: fix 1-byte return during x.(T) for 0-byte T 2014-06-02 21:06:30 -04:00
issue8155.go cmd/6g: fix stack zeroing on native client 2014-06-05 16:40:23 -04:00
issue8158.go runtime: fix panic stack during runtime.Goexit during panic 2014-06-06 16:52:14 -04:00
issue8280.go cmd/gc: fix import of package with var func returning _ 2014-09-24 16:53:34 -04:00
issue8311.go cmd/gc: print x++ (not x += 1) in errors about x++ 2014-09-25 13:13:02 -04:00
issue8325.go cmd/6g, cmd/8g: fix, test byte-sized magic multiply 2014-08-11 15:24:36 -04:00
issue8336.go cmd/gc: fix order of channel evaluation of receive channels 2014-08-25 07:05:45 -04:00
issue8347.go test: add test for issue8347 2014-07-18 20:59:55 -04:00
issue8475.go cmd/gc: comma-ok assignments produce untyped bool as 2nd result 2014-08-11 16:11:55 -07:00
issue8507.go cmd/gc: avoid infinite recursion on invalid recursive type 2014-09-25 13:08:37 -04:00
issue8612.go test: add test that caused gccgo to crash on valid code 2014-08-28 19:51:21 -07:00
issue8761.go cmd/gc: fix call order in array literal of slice literal of make chan 2014-09-30 12:48:47 -04:00
issue8947.go cmd/gc: synthesize zeroed value for non-assignment context 2014-10-24 10:27:39 -04:00
issue8961.go cmd/gc: emit code for extern = <N> 2014-10-20 15:59:10 +01:00
issue9006.go cmd/gc: fix internal compiler error in struct compare 2014-10-28 23:22:46 -04:00
issue9110.go runtime: fix sudog leak 2014-11-16 16:44:45 -05:00