Skip to content

Commit 0c50f57

Browse files
Merge branch '5638-sdk-local-ide-not-getting-stderr-from-python-program-when-it-fails' into 'master'
[FIX][SDK] Local ide not getting stderr from python program when it crashes at runtime See merge request codingame/game-engine!215
2 parents 0fe26f5 + 87af6b7 commit 0c50f57

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

runner/src/main/java/com/codingame/gameengine/runner/GameRunner.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,22 @@ private String getNextPlayerOutput(NextPlayerInfo nextPlayerInfo, String nextPla
270270
String playerOutput = player.getOutput(nextPlayerInfo.nbLinesNextOutput, nextPlayerInfo.timeout);
271271
if (playerOutput != null)
272272
playerOutput = playerOutput.replace('\r', '\n');
273-
readError(player);
274273

275-
if (checkOutput(playerOutput, nextPlayerInfo.nbLinesNextOutput) != OutputResult.OK) {
274+
if (checkOutput(playerOutput, nextPlayerInfo.nbLinesNextOutput) == OutputResult.OK) {
275+
// Read this turn's stderr
276+
readError(player);
277+
} else {
278+
// Give the agent time to crash cleanly
279+
try {
280+
Thread.sleep(nextPlayerInfo.timeout);
281+
} catch (InterruptedException e) {
282+
e.printStackTrace();
283+
}
284+
// Read this turns stderr and the crash output
285+
readError(player);
276286
return null;
277287
}
288+
278289
if ((playerOutput != null) && playerOutput.isEmpty() && (nextPlayerInfo.nbLinesNextOutput == 1)) {
279290
return "\n";
280291
}

0 commit comments

Comments
 (0)