Envelope fields left uninitialized by envelope::alloc; CProxySection_ArrayBase::ckSend loop wraps for an empty section

オープン
#4,223 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
cpp

調査の方向性

Start by reading envelope::alloc and CProxySection_ArrayBase::ckSend, the two code paths named in the report, and inspect their existing tests for envelope initialization and empty sections. Check how messages are allocated, sent, and freed when a section has no elements. Done means unset envelope fields are initialized in every build and empty sections do not wrap the loop or lose the original message.

索引モデルが issue の本文から書いたものです。

説明

Found while fixing the uninitialized ifNotThere in section sends.

  • envelope::alloc zeroes the envelope only under CMK_REPLAYSYSTEM. Fields that a send path does not set explicitly keep whatever the allocator returned; ifNotThere was one such field. Zeroing the envelope header in every build would close the whole class at a small cost per message.
  • CProxySection_ArrayBase::ckSend loops with i < _elems.size() - 1; for a section ID with no elements the unsigned subtraction wraps and the loop reads past the vector. When the last section ID in the list is empty, the original message is neither sent nor freed.

🤖 Generated with Claude Code

主要言語
C++
スター
241
フォーク
62
平均マージ
1日 1時間
マージ済み PR(30日)
125

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

charmplusplus/charm のほかの issue

charmplusplus/charm の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。