• Dmitriy Vyukov's avatar
    runtime: fix spurious deadlock reporting · 56959158
    Dmitriy Vyukov authored
    Fixes #2337.
    Unfortunate sequence of events is:
    1. maxcpu=2, mcpu=1, grunning=1
    2. starttheworld creates an extra M:
       maxcpu=2, mcpu=2, grunning=1
    4. the goroutine calls runtime.GOMAXPROCS(1)
       maxcpu=1, mcpu=2, grunning=1
    5. since it sees mcpu>maxcpu, it calls gosched()
    6. schedule() deschedules the goroutine:
       maxcpu=1, mcpu=1, grunning=0
    7. schedule() call getnextandunlock() which
       fails to pick up the goroutine again,
       because canaddcpu() fails, because mcpu==maxcpu
    8. then it sees that grunning==0,
       reports deadlock and terminates
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/5191044
    56959158
Name
Last commit
Last update
..
bug083.dir Loading commit data...
bug088.dir Loading commit data...
bug106.dir Loading commit data...
bug133.dir Loading commit data...
bug160.dir Loading commit data...
bug191.dir Loading commit data...
bug222.dir Loading commit data...
bug226.dir Loading commit data...
bug248.dir Loading commit data...
bug282.dir Loading commit data...
bug302.dir Loading commit data...
bug306.dir Loading commit data...
bug313.dir Loading commit data...
bug322.dir Loading commit data...
bug324.dir Loading commit data...
bug335.dir Loading commit data...
bug345.dir Loading commit data...
bug369.dir Loading commit data...
bug000.go Loading commit data...
bug002.go Loading commit data...
bug003.go Loading commit data...
bug004.go Loading commit data...
bug005.go Loading commit data...
bug006.go Loading commit data...
bug007.go Loading commit data...
bug008.go Loading commit data...
bug009.go Loading commit data...
bug010.go Loading commit data...
bug011.go Loading commit data...
bug012.go Loading commit data...
bug013.go Loading commit data...
bug014.go Loading commit data...
bug015.go Loading commit data...
bug016.go Loading commit data...
bug017.go Loading commit data...
bug020.go Loading commit data...
bug021.go Loading commit data...
bug022.go Loading commit data...
bug023.go Loading commit data...
bug024.go Loading commit data...
bug026.go Loading commit data...
bug027.go Loading commit data...
bug028.go Loading commit data...
bug030.go Loading commit data...
bug031.go Loading commit data...
bug035.go Loading commit data...
bug036.go Loading commit data...
bug037.go Loading commit data...
bug038.go Loading commit data...
bug039.go Loading commit data...
bug040.go Loading commit data...
bug045.go Loading commit data...
bug046.go Loading commit data...
bug047.go Loading commit data...
bug048.go Loading commit data...
bug049.go Loading commit data...
bug050.go Loading commit data...
bug051.go Loading commit data...
bug052.go Loading commit data...
bug053.go Loading commit data...
bug054.go Loading commit data...
bug055.go Loading commit data...
bug056.go Loading commit data...
bug057.go Loading commit data...
bug058.go Loading commit data...
bug059.go Loading commit data...
bug060.go Loading commit data...
bug061.go Loading commit data...
bug062.go Loading commit data...
bug063.go Loading commit data...
bug064.go Loading commit data...
bug065.go Loading commit data...
bug066.go Loading commit data...
bug067.go Loading commit data...
bug068.go Loading commit data...
bug069.go Loading commit data...
bug070.go Loading commit data...
bug071.go Loading commit data...
bug072.go Loading commit data...
bug073.go Loading commit data...
bug074.go Loading commit data...
bug075.go Loading commit data...
bug076.go Loading commit data...
bug077.go Loading commit data...
bug078.go Loading commit data...
bug080.go Loading commit data...
bug081.go Loading commit data...
bug082.go Loading commit data...
bug083.go Loading commit data...
bug084.go Loading commit data...
bug085.go Loading commit data...
bug086.go Loading commit data...
bug087.go Loading commit data...
bug088.go Loading commit data...
bug089.go Loading commit data...
bug090.go Loading commit data...
bug091.go Loading commit data...
bug092.go Loading commit data...
bug093.go Loading commit data...
bug094.go Loading commit data...
bug096.go Loading commit data...
bug097.go Loading commit data...
bug098.go Loading commit data...
bug099.go Loading commit data...
bug101.go Loading commit data...
bug102.go Loading commit data...
bug103.go Loading commit data...
bug104.go Loading commit data...
bug106.go Loading commit data...
bug107.go Loading commit data...
bug108.go Loading commit data...
bug109.go Loading commit data...
bug110.go Loading commit data...
bug111.go Loading commit data...
bug112.go Loading commit data...
bug113.go Loading commit data...
bug114.go Loading commit data...
bug115.go Loading commit data...
bug116.go Loading commit data...
bug117.go Loading commit data...
bug118.go Loading commit data...
bug119.go Loading commit data...
bug120.go Loading commit data...
bug121.go Loading commit data...
bug122.go Loading commit data...
bug123.go Loading commit data...
bug126.go Loading commit data...
bug127.go Loading commit data...
bug128.go Loading commit data...
bug129.go Loading commit data...
bug130.go Loading commit data...
bug131.go Loading commit data...
bug132.go Loading commit data...
bug133.go Loading commit data...
bug135.go Loading commit data...
bug136.go Loading commit data...
bug137.go Loading commit data...
bug139.go Loading commit data...
bug140.go Loading commit data...
bug141.go Loading commit data...
bug142.go Loading commit data...
bug143.go Loading commit data...
bug144.go Loading commit data...
bug145.go Loading commit data...
bug146.go Loading commit data...
bug147.go Loading commit data...
bug148.go Loading commit data...
bug149.go Loading commit data...
bug150.go Loading commit data...
bug151.go Loading commit data...
bug1515.go Loading commit data...
bug152.go Loading commit data...
bug154.go Loading commit data...
bug155.go Loading commit data...
bug156.go Loading commit data...
bug157.go Loading commit data...
bug158.go Loading commit data...
bug159.go Loading commit data...
bug160.go Loading commit data...
bug161.go Loading commit data...
bug163.go Loading commit data...
bug164.go Loading commit data...
bug165.go Loading commit data...
bug167.go Loading commit data...
bug168.go Loading commit data...
bug169.go Loading commit data...
bug170.go Loading commit data...
bug171.go Loading commit data...
bug172.go Loading commit data...
bug173.go Loading commit data...
bug174.go Loading commit data...
bug175.go Loading commit data...
bug176.go Loading commit data...
bug177.go Loading commit data...
bug178.go Loading commit data...
bug179.go Loading commit data...
bug180.go Loading commit data...
bug181.go Loading commit data...
bug182.go Loading commit data...
bug183.go Loading commit data...
bug184.go Loading commit data...
bug185.go Loading commit data...
bug186.go Loading commit data...
bug187.go Loading commit data...
bug188.go Loading commit data...
bug189.go Loading commit data...
bug190.go Loading commit data...
bug191.go Loading commit data...
bug192.go Loading commit data...
bug193.go Loading commit data...
bug194.go Loading commit data...
bug195.go Loading commit data...
bug196.go Loading commit data...
bug197.go Loading commit data...
bug198.go Loading commit data...
bug199.go Loading commit data...
bug200.go Loading commit data...
bug201.go Loading commit data...
bug202.go Loading commit data...
bug203.go Loading commit data...
bug204.go Loading commit data...
bug205.go Loading commit data...
bug206.go Loading commit data...
bug207.go Loading commit data...
bug208.go Loading commit data...
bug209.go Loading commit data...
bug211.go Loading commit data...
bug212.go Loading commit data...
bug213.go Loading commit data...
bug214.go Loading commit data...
bug215.go Loading commit data...
bug216.go Loading commit data...
bug217.go Loading commit data...
bug218.go Loading commit data...
bug219.go Loading commit data...
bug220.go Loading commit data...
bug221.go Loading commit data...
bug222.go Loading commit data...
bug223.go Loading commit data...
bug224.go Loading commit data...
bug225.go Loading commit data...
bug226.go Loading commit data...
bug227.go Loading commit data...
bug228.go Loading commit data...
bug229.go Loading commit data...
bug230.go Loading commit data...
bug231.go Loading commit data...
bug232.go Loading commit data...
bug233.go Loading commit data...
bug234.go Loading commit data...
bug235.go Loading commit data...
bug236.go Loading commit data...
bug237.go Loading commit data...
bug238.go Loading commit data...
bug239.go Loading commit data...
bug240.go Loading commit data...
bug241.go Loading commit data...
bug242.go Loading commit data...
bug243.go Loading commit data...
bug244.go Loading commit data...
bug245.go Loading commit data...
bug246.go Loading commit data...
bug247.go Loading commit data...
bug248.go Loading commit data...
bug249.go Loading commit data...
bug250.go Loading commit data...
bug251.go Loading commit data...
bug252.go Loading commit data...
bug253.go Loading commit data...
bug254.go Loading commit data...
bug255.go Loading commit data...
bug256.go Loading commit data...
bug257.go Loading commit data...
bug258.go Loading commit data...
bug259.go Loading commit data...
bug260.go Loading commit data...
bug261.go Loading commit data...
bug262.go Loading commit data...
bug263.go Loading commit data...
bug264.go Loading commit data...
bug265.go Loading commit data...
bug266.go Loading commit data...
bug267.go Loading commit data...
bug268.go Loading commit data...
bug269.go Loading commit data...
bug270.go Loading commit data...
bug271.go Loading commit data...
bug272.go Loading commit data...
bug273.go Loading commit data...
bug274.go Loading commit data...
bug275.go Loading commit data...
bug276.go Loading commit data...
bug277.go Loading commit data...
bug278.go Loading commit data...
bug279.go Loading commit data...
bug280.go Loading commit data...
bug281.go Loading commit data...
bug282.go Loading commit data...
bug283.go Loading commit data...
bug284.go Loading commit data...
bug285.go Loading commit data...
bug286.go Loading commit data...
bug287.go Loading commit data...
bug288.go Loading commit data...
bug289.go Loading commit data...
bug290.go Loading commit data...
bug291.go Loading commit data...
bug292.go Loading commit data...
bug293.go Loading commit data...
bug294.go Loading commit data...
bug295.go Loading commit data...
bug296.go Loading commit data...
bug297.go Loading commit data...
bug298.go Loading commit data...
bug299.go Loading commit data...
bug300.go Loading commit data...
bug301.go Loading commit data...
bug302.go Loading commit data...
bug303.go Loading commit data...
bug304.go Loading commit data...
bug305.go Loading commit data...
bug306.go Loading commit data...
bug307.go Loading commit data...
bug308.go Loading commit data...
bug309.go Loading commit data...
bug310.go Loading commit data...
bug311.go Loading commit data...
bug312.go Loading commit data...
bug313.go Loading commit data...
bug314.go Loading commit data...
bug315.go Loading commit data...
bug316.go Loading commit data...
bug317.go Loading commit data...
bug318.go Loading commit data...
bug319.go Loading commit data...
bug320.go Loading commit data...
bug321.go Loading commit data...
bug322.go Loading commit data...
bug323.go Loading commit data...
bug324.go Loading commit data...
bug325.go Loading commit data...
bug326.go Loading commit data...
bug327.go Loading commit data...
bug328.go Loading commit data...
bug329.go Loading commit data...
bug330.go Loading commit data...
bug331.go Loading commit data...
bug332.go Loading commit data...
bug333.go Loading commit data...
bug334.go Loading commit data...
bug335.go Loading commit data...
bug336.go Loading commit data...
bug337.go Loading commit data...
bug338.go Loading commit data...
bug339.go Loading commit data...
bug340.go Loading commit data...
bug341.go Loading commit data...
bug342.go Loading commit data...
bug343.go Loading commit data...
bug344.go Loading commit data...
bug345.go Loading commit data...
bug346.go Loading commit data...
bug347.go Loading commit data...
bug348.go Loading commit data...
bug349.go Loading commit data...
bug350.go Loading commit data...
bug351.go Loading commit data...
bug352.go Loading commit data...
bug353.go Loading commit data...
bug354.go Loading commit data...
bug355.go Loading commit data...
bug356.go Loading commit data...
bug357.go Loading commit data...
bug358.go Loading commit data...
bug359.go Loading commit data...
bug361.go Loading commit data...
bug362.go Loading commit data...
bug363.go Loading commit data...
bug364.go Loading commit data...
bug365.go Loading commit data...
bug366.go Loading commit data...
bug368.go Loading commit data...
bug369.go Loading commit data...
bug370.go Loading commit data...