ConcreteShadowNode::getConcreteSharedProps() returns a reference to a temporary
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 82/100
調査の方向性
packages/react-native/ReactCommon/react/renderer/core/ConcreteShadowNode.hを読み、特に144~148行目を確認して、getConcreteSharedProps()の戻り値の型と実装を調べてください。警告を確認するため、提示された再現コードを-Wreturn-stack-address付きでコンパイルし、その後、要求された名前とconst性を維持しながら、戻り値が有効なままになるようにメソッドを更新してください。再現コードが警告なしでコンパイルできれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Description
ConcreteShadowNode::getConcreteSharedProps() (ConcreteShadowNode.h) is declared to return const std::shared_ptr<const ConcreteProps> & and returns std::static_pointer_cast<const ConcreteProps>(props_), a temporary destroyed as the function returns, so every caller gets a reference to a destroyed shared_ptr. Nitro's generated view components called it until margelo/nitro#1502 moved them to getProps().
Steps to reproduce
- Clone the reproducer below and run
bash repro.shon Ubuntu 24.04 withclang git libboost-dev libgoogle-glog-dev libdouble-conversion-devfrom apt, or thedocker runline in its README. It clones react-native'smain, and folly, fast_float and fmt at the versionspackages/react-native/gradle/libs.versions.tomlpins. - It compiles
repro.cpp, which declares a component's shadow node,ConcreteShadowNode<ProbeComponentName, ShadowNode, Props>, and a function that returnsshadowNode.getConcreteSharedProps().
Expected: repro.cpp compiles without a warning: getConcreteSharedProps() returns the shared_ptr by value, or a reference to one that outlives the call, and keeps its name and its const.
Actual: clang reports returning reference to local temporary object at the function's return, ConcreteShadowNode.h:147.
React Native Version
0.88.1
Affected Platforms
Other (please specify)
Output of npx @react-native-community/cli info
Not an app. The reproducer compiles ReactCommon from react-native's main at b9a83f3 (0.88.0 and 0.88.1 have the
same getConcreteSharedProps), on Ubuntu 24.04 with clang 18.1.3, folly 2024.11.18.00, fast_float 8.0.0 and
fmt 12.1.0. ReactCommon is shared by Android and iOS.
Stacktrace or Logs
react/react-native b9a83f3, Ubuntu clang version 18.1.3 (1ubuntu1), Linux x86_64
folly 2024.11.18.00, fast_float 8.0.0 and fmt 12.1.0, as libs.versions.toml pins them
compiling repro.cpp, whose sharedPropsOf() returns shadowNode.getConcreteSharedProps(), with -Wreturn-stack-address
ReactCommon/react/renderer/core/ConcreteShadowNode.h:147:12: warning: returning reference to local temporary object [-Wreturn-stack-address]
147 | return std::static_pointer_cast<const ConcreteProps>(props_);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
summary: react/react-native b9a83f3: clang reports that ConcreteShadowNode::getConcreteSharedProps() returns a reference to a temporary
MANDATORY Reproducer
https://github.com/YevheniiKotyrlo/concrete-shadow-node-dangling-shared-props
- 主要言語
- C++
- スター
- 127k
- フォーク
- 25.5k
- 平均マージ
- 3日 18時間
- マージ済み PR(30日)
- 188
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
react/react-native のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
react/react-native#59945 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
react/react-native#59942 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
react/react-native#59939 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
react/react-native#59929 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
iOS Fabric pointer-handler reset leaves the next lone touch non-primary対応中かも @alleneubank が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
react/react-native#59919 ·
メンテナーはふだん 2 日以内に返信
react/react-native の issue をすべて見る
似ている issue
-
type:bug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
tensorflow/tflite-micro#3995 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
not for AI lovers
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
VT: Backend
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
contour-terminal/contour#2314 ·
メンテナーはふだん 1 日以内に返信