Skip to content

閉じられたチャネルにエラーが流れ込む可能性がある #16

Open
@KawaiKenta

Description

@KawaiKenta

バグの説明

現在、認証のためのWebサーバーを一時的に立てており、リクエストの結果やサーバーのエラーをチャネルを使ってメインスレッドに渡している。
チャネルにリクエスト結果が渡るとその時点でチャネルは閉じられる。
この振る舞いによって、閉じられたチャネルにエラーが流れ込む可能性がある。

具体的には

if err := server.ListenAndServe(); err != nil {
	if !errors.Is(err, http.ErrServerClosed) {
		// サーバー停止以外のエラーをエラーとする
		resultCh <- Result{"", err}
	}
}

この部分について、認証リクエストが処理されてから、サーバーが停止するときにエラーが発生すると、閉じられたチャネルにエラーが流れ込んでしまいパニックになる可能性があるのではないかと疑っている。

想定される原因・修正方法

並行処理やチャネルを使って通信していることが原因なので、非同期をやめ同期的に処理するようにしたら良さそう

補足

  • これが原因でエラーに遭遇したことはありません
  • サーバー停止以外のエラーがあり得なければ、問題なさそうに思います

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions