Different vftable size for boost::detail::shared_state_base regarding BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION

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

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

評価

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

調査の方向性

thread/include/boost/thread/future.hpp の327行目付近から始め、shared_state_base のコードを285行目および304行目付近の対策と比較してください。BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION の有無が混在するモジュールで、異なる vftable レイアウトや報告されているリンカー警告が発生しなくなっていることを確認してください。

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

説明

Version of Boost: All of them, including 'master'

File: thread/include/boost/thread/future.hpp , around line 327

The matter is that this file contains the following portion of code (class boost::detail::shared_state_base):

#if defined BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION
            virtual void set_continuation_ptr(continuation_ptr_type continuation, boost::unique_lock<boost::mutex>& lock)
            {
              continuations.push_back(continuation);
              if (done) {
                do_continuation(lock);
              }
            }
#endif

So the vftable layout depends on BOOST_THREAD_PROVIDES_FUTURE_CONTINUATION macro, which leads to linker warning (and unpredictable runtime outcomes) when mixing code from two different modules, with only one of them using that macro.

There are some precautions about this issue before (see ll.285 and 304). It would be nice to have the same here.

主要言語
C++
スター
213
フォーク
171
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

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

boostorg/thread のほかの issue

boostorg/thread の issue をすべて見る

似ている issue

C++ の issue をもっと見る

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

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