From ff8828d6ef3b980a7ded086d40c9bf2c73bf466c Mon Sep 17 00:00:00 2001 From: Celrenheit Date: Tue, 21 Feb 2023 10:21:00 +0100 Subject: [PATCH] catch potential deadlock when the context is done but waiting to send on a channel in the default case --- select-default-deadlock.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 select-default-deadlock.yml diff --git a/select-default-deadlock.yml b/select-default-deadlock.yml new file mode 100644 index 0000000..9308386 --- /dev/null +++ b/select-default-deadlock.yml @@ -0,0 +1,14 @@ +rules: +- id: ctx-done-and-default-deadlock + patterns: + - pattern-either: + - pattern: | + select { + case <-ctx.Done(): + $BODY + default: + ... <- ... + } + message: "ctx.Done() and send to channel in default can cause a potential deadlock" + languages: [go] + severity: ERROR \ No newline at end of file