Scheduler-test: bugfix - protect further allocation with guard
...whenever the planning falls behind schedule, it can happen that the planner-worker immediately dispatches its own jobs; while the calculation is broken anyway in this situation, especially this call scheme leads to dropping the Grooming-Token prior to the calculation dispatched directly. Since the dependency relation can only be established after creating both predecessor and successor schedules, the corresponding allocation of the NOTIFY-Activity is not protected against concurrent access, which probably leads to the assertion failure due to corruption of the allocator's internal data structures...
This commit is contained in:
parent
dedfbf4984
commit
100252acdf
2 changed files with 85 additions and 27 deletions
|
|
@ -205,20 +205,8 @@ namespace gear {
|
|||
/** build Activity chain and hand-over to the Scheduler. */
|
||||
ScheduleSpec post();
|
||||
|
||||
|
||||
ScheduleSpec
|
||||
linkToSuccessor (ScheduleSpec& succSpec)
|
||||
{
|
||||
term_->appendNotificationTo (*succSpec.term_);
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
ScheduleSpec
|
||||
linkToPredecessor (ScheduleSpec& predSpec)
|
||||
{
|
||||
predSpec.term_->appendNotificationTo (*term_);
|
||||
return move(*this);
|
||||
}
|
||||
ScheduleSpec linkToSuccessor (ScheduleSpec&);
|
||||
ScheduleSpec linkToPredecessor(ScheduleSpec&);
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -588,6 +576,23 @@ namespace gear {
|
|||
return move(*this);
|
||||
}
|
||||
|
||||
inline ScheduleSpec
|
||||
ScheduleSpec::linkToSuccessor (ScheduleSpec& succSpec)
|
||||
{ // protect allocation
|
||||
auto guard = theScheduler_->layer2_.requireGroomingTokenHere();
|
||||
term_->appendNotificationTo (*succSpec.term_);
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
inline ScheduleSpec
|
||||
ScheduleSpec::linkToPredecessor (ScheduleSpec& predSpec)
|
||||
{ // protect allocation
|
||||
auto guard = theScheduler_->layer2_.requireGroomingTokenHere();
|
||||
predSpec.term_->appendNotificationTo (*term_);
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Enqueue for time-bound execution, possibly dispatch immediately.
|
||||
|
|
|
|||
|
|
@ -105715,7 +105715,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1703029832104" ID="ID_592804815" MODIFIED="1703037364626" TEXT="Testläufe">
|
||||
<node COLOR="#435e98" CREATED="1703029837383" FOLDED="true" ID="ID_728556946" MODIFIED="1703037346853" TEXT="Groooming-Token durcheinander">
|
||||
<node COLOR="#435e98" CREATED="1703029837383" FOLDED="true" ID="ID_728556946" MODIFIED="1703362241957" TEXT="Groooming-Token durcheinander">
|
||||
<linktarget COLOR="#955269" DESTINATION="ID_728556946" ENDARROW="Default" ENDINCLINATION="339;27;" ID="Arrow_ID_1122005137" SOURCE="ID_728405176" STARTARROW="None" STARTINCLINATION="-478;-13;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1703030898754" ID="ID_985851431" MODIFIED="1703032124763" TEXT="generell: durch die letzte Änderung haben wir nun MASSIVE contention">
|
||||
|
|
@ -105822,8 +105822,31 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1703200244595" ID="ID_960168734" MODIFIED="1703200289458" TEXT="Problem offensichtlich noch nicht ganz gelöst">
|
||||
<linktarget COLOR="#e52142" DESTINATION="ID_960168734" ENDARROW="Default" ENDINCLINATION="408;21;" ID="Arrow_ID_1198532158" SOURCE="ID_1606924133" STARTARROW="Default" STARTINCLINATION="-380;-216;"/>
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703200308153" HGAP="42" ID="ID_1359580391" MODIFIED="1703200338745" TEXT="ein komplexer re-entrant Call in den Planungs-Job" VSHIFT="-2">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703200308153" HGAP="42" ID="ID_1359580391" MODIFIED="1703362577284" TEXT="beobachtet unter starkem Scheduling-Druck" VSHIFT="-2">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703362266933" ID="ID_1884536172" MODIFIED="1703362287766" TEXT="in der Tat: auch die Dependency-Definition macht noch eine Allokation">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1703362330910" ID="ID_1424201931" MODIFIED="1703362330910">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...und diese wird im aktuellen Test-Setup nicht von der Grooming-Token-Klammer erfaßt
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fad2b9" COLOR="#690f14" CREATED="1703362336649" ID="ID_284910644" MODIFIED="1703362643925" TEXT="das ist aber infolge der DSL-Struktur grundsätzlich immer eine latente Gefahr">
|
||||
<linktarget COLOR="#6b2d3c" DESTINATION="ID_284910644" ENDARROW="Default" ENDINCLINATION="491;18;" ID="Arrow_ID_898309518" SOURCE="ID_1261843352" STARTARROW="Default" STARTINCLINATION="107;-798;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
<node CREATED="1703362357543" ID="ID_548286455" MODIFIED="1703362441517" TEXT="wenngliech auch es nur auftritt, wenn das Schedule ohnehin gebrochen ist">
|
||||
<arrowlink COLOR="#fef8bd" DESTINATION="ID_1851392307" ENDARROW="Default" ENDINCLINATION="59;-99;" ID="Arrow_ID_107435456" STARTARROW="None" STARTINCLINATION="-400;15;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -106554,7 +106577,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1703126842397" FOLDED="true" ID="ID_1527226217" MODIFIED="1703201482271" TEXT="teste mit längerem Node-Graph (128)">
|
||||
<node COLOR="#338800" CREATED="1703126842397" FOLDED="true" ID="ID_1527226217" MODIFIED="1703362208466" TEXT="teste mit längerem Node-Graph (128)">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1703126876508" ID="ID_1769051451" MODIFIED="1703126906987" TEXT="nicht klar ob der Graph geeignet ist (er ist dann andauernd 16 Nodes breit)"/>
|
||||
<node COLOR="#435e98" CREATED="1703126908288" FOLDED="true" ID="ID_1243795879" MODIFIED="1703200368271" TEXT="Deadlock">
|
||||
|
|
@ -107116,12 +107139,26 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1703361871020" FOLDED="true" ID="ID_1851392307" MODIFIED="1703362439437" TEXT="die Abarbeitung verzögert sich stets bis der Plan bricht...">
|
||||
<arrowlink COLOR="#68324a" DESTINATION="ID_1696604004" ENDARROW="Default" ENDINCLINATION="-242;0;" ID="Arrow_ID_962189970" STARTARROW="None" STARTINCLINATION="93;34;"/>
|
||||
<linktarget COLOR="#fef8bd" DESTINATION="ID_1851392307" ENDARROW="Default" ENDINCLINATION="59;-99;" ID="Arrow_ID_107435456" SOURCE="ID_548286455" STARTARROW="None" STARTINCLINATION="-400;15;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1703361917061" ID="ID_410454444" MODIFIED="1703362001086" TEXT="zunächst einmal wird der Planer nicht mehr rechtzeitig fertig"/>
|
||||
<node CREATED="1703362001626" ID="ID_1758621746" MODIFIED="1703362016009" TEXT="und steigt deshalb rekursiv in seine eigene Continuation ein"/>
|
||||
<node CREATED="1703362016672" ID="ID_1726359995" MODIFIED="1703362022291" TEXT="das allein wäre noch kein Problem"/>
|
||||
<node CREATED="1703362022857" ID="ID_877239008" MODIFIED="1703362051720" TEXT="aber irgenwann fällt das Continuation-Schedule hinter das aktuelle Backlog"/>
|
||||
<node CREATED="1703362059323" ID="ID_224714036" MODIFIED="1703362079516" TEXT="und wen die Verzögerungen mal bis auf 10..15ms wachsen"/>
|
||||
<node COLOR="#5b280f" CREATED="1703362080249" ID="ID_1304525999" MODIFIED="1703362125483" TEXT="dann disponiert der Planer in die Vergangenheit">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703192685376" ID="ID_1662036004" MODIFIED="1703193553804" TEXT="sporadische Probleme">
|
||||
<icon BUILTIN="bell"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703192691245" FOLDED="true" ID="ID_1922123761" MODIFIED="1703193684937" TEXT="Hash-Failure: der Planer überfährt seinen eignen Plan">
|
||||
<arrowlink COLOR="#dd2b69" DESTINATION="ID_1040196464" ENDARROW="Default" ENDINCLINATION="-497;-1249;" ID="Arrow_ID_1906218569" STARTARROW="None" STARTINCLINATION="-988;51;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1703193560824" ID="ID_1696604004" MODIFIED="1703193587745" TEXT="dagegen können wir uns auf dieser Ebene nicht wappnen">
|
||||
<linktarget COLOR="#68324a" DESTINATION="ID_1696604004" ENDARROW="Default" ENDINCLINATION="-242;0;" ID="Arrow_ID_962189970" SOURCE="ID_1851392307" STARTARROW="None" STARTINCLINATION="93;34;"/>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
|
|
@ -107144,7 +107181,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1702949773611" ID="ID_1539248543" MODIFIED="1703346098120" TEXT="wieder Assertion-Failure aus dem Allokator">
|
||||
<node COLOR="#435e98" CREATED="1702949773611" ID="ID_1539248543" MODIFIED="1703362946389" TEXT="wieder Assertion-Failure aus dem Allokator">
|
||||
<linktarget COLOR="#fd1e5d" DESTINATION="ID_1539248543" ENDARROW="Default" ENDINCLINATION="-214;-502;" ID="Arrow_ID_1665215112" SOURCE="ID_1042591319" STARTARROW="None" STARTINCLINATION="417;46;"/>
|
||||
<linktarget COLOR="#e02174" DESTINATION="ID_1539248543" ENDARROW="Default" ENDINCLINATION="-578;34;" ID="Arrow_ID_250558884" SOURCE="ID_1069075638" STARTARROW="None" STARTINCLINATION="186;12;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
|
|
@ -108012,6 +108049,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1703350535218" ID="ID_1070838316" MODIFIED="1703354065957" STYLE="fork" TEXT="ScheduleSpec::linkToSuccessor() ist noch nicht geschützt">
|
||||
<arrowlink COLOR="#3f1abf" DESTINATION="ID_1782946591" ENDARROW="Default" ENDINCLINATION="172;-6;" ID="Arrow_ID_67888117" STARTARROW="None" STARTINCLINATION="-516;25;"/>
|
||||
<linktarget COLOR="#8b5475" DESTINATION="ID_1070838316" ENDARROW="Default" ENDINCLINATION="83;144;" ID="Arrow_ID_999177251" SOURCE="ID_1261843352" STARTARROW="None" STARTINCLINATION="12;-110;"/>
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node COLOR="#435e98" CREATED="1703350674998" HGAP="10" ID="ID_1066318656" MODIFIED="1703351002992" TEXT="Treffer! Versenkt!" VSHIFT="-14">
|
||||
|
|
@ -108103,6 +108141,17 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1703362162770" ID="ID_510180676" MODIFIED="1703362172040" TEXT="Fazit">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1703362173152" ID="ID_1455939072" MODIFIED="1703362188293" TEXT="kein neues Problem">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703362177487" ID="ID_1261843352" MODIFIED="1703362733092" TEXT="sondern eine noch nicht geschlossene Lücke">
|
||||
<arrowlink COLOR="#6b2d3c" DESTINATION="ID_284910644" ENDARROW="Default" ENDINCLINATION="491;18;" ID="Arrow_ID_898309518" STARTARROW="Default" STARTINCLINATION="107;-798;"/>
|
||||
<arrowlink COLOR="#8b5475" DESTINATION="ID_1070838316" ENDARROW="Default" ENDINCLINATION="83;144;" ID="Arrow_ID_999177251" STARTARROW="None" STARTINCLINATION="12;-110;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703351409418" ID="ID_1936410340" MODIFIED="1703353881323" STYLE="fork">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -108147,7 +108196,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1703352638457" ID="ID_1942328962" MODIFIED="1703352653564" TEXT="trotzdem hätte das nicht passieren dürfen"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#3f0099" CREATED="1703353017072" ID="ID_1850770118" MODIFIED="1703354053482" TEXT="Logik-Fehler: falsche Bezugs-Node verwendet">
|
||||
<arrowlink COLOR="#2f28ad" DESTINATION="ID_1815362637" ENDARROW="Default" ENDINCLINATION="205;-5;" ID="Arrow_ID_258584322" STARTARROW="None" STARTINCLINATION="-334;20;"/>
|
||||
<arrowlink COLOR="#2f28ad" DESTINATION="ID_1815362637" ENDARROW="Default" ENDINCLINATION="106;0;" ID="Arrow_ID_258584322" STARTARROW="None" STARTINCLINATION="-334;20;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1703353040028" ID="ID_813083541" MODIFIED="1703353822445" TEXT="brauche den Anfang vom Chunk">
|
||||
<icon BUILTIN="yes"/>
|
||||
|
|
@ -108157,19 +108206,23 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1703363369164" ID="ID_427677972" MODIFIED="1703363376211" TEXT="weiterer Incident beobachtet">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1703353891475" ID="ID_1234547026" MODIFIED="1703353896302" TEXT="Fixes / Verbesserungen">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1703353897930" ID="ID_1782946591" MODIFIED="1703354058778" TEXT="auch Dependency-Planung per Grooming-Token schützen">
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1703353891475" ID="ID_1234547026" MODIFIED="1703362979743" TEXT="Fixes / Verbesserungen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1703353897930" ID="ID_1782946591" MODIFIED="1703362936222" TEXT="auch Dependency-Planung per Grooming-Token schützen">
|
||||
<linktarget COLOR="#3f1abf" DESTINATION="ID_1782946591" ENDARROW="Default" ENDINCLINATION="172;-6;" ID="Arrow_ID_67888117" SOURCE="ID_1070838316" STARTARROW="None" STARTINCLINATION="-516;25;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1703353913264" ID="ID_1815362637" MODIFIED="1703354053483" TEXT="Chunk-Start-Zeit korrekt (auf Anfang) setzen">
|
||||
<linktarget COLOR="#2f28ad" DESTINATION="ID_1815362637" ENDARROW="Default" ENDINCLINATION="205;-5;" ID="Arrow_ID_258584322" SOURCE="ID_1850770118" STARTARROW="None" STARTINCLINATION="-334;20;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1703353928974" ID="ID_538772671" MODIFIED="1703353948865" TEXT="auch Planungs Zeit-Schritt konfigurierbar machen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1703353913264" ID="ID_1815362637" MODIFIED="1703362972916" TEXT="Chunk-Start-Zeit korrekt (auf Anfang) setzen">
|
||||
<linktarget COLOR="#2f28ad" DESTINATION="ID_1815362637" ENDARROW="Default" ENDINCLINATION="106;0;" ID="Arrow_ID_258584322" SOURCE="ID_1850770118" STARTARROW="None" STARTINCLINATION="-334;20;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1703353928974" ID="ID_538772671" MODIFIED="1703361847604" TEXT="auch Planungs Zeit-Schritt konfigurierbar machen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue