Read after free in TypeSpec::struct_list()
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- cpp
調査の方向性
指定された Windows デバッグ構成で提供された testshade コマンドを実行し、その後 src/include/osl_pvt.h の TypeSpec::structspec と、src/liboslexec/shadingsys.cpp からの使用箇所を調査します。SymbolTable::delete_syms() を通る OSLCompiler の破棄パスを追跡します。oslquery() または Symbol::print() が struct_list() にアクセスしたときに、再現した read-after-free が発生しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Problem
I compile a shader with a struct using OSLCompiler. When OSLCompiler is destructed it performs SymbolTable::delete_syms() which clears TypeSpec::struct_list().
Some operations, like ShadingSystem::oslquery() and Symbol::print() access entries in TypeSpec::struct_list() which was deleted when OSLCompiler went out of scope.
Related to https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/issues/1427
Steps to Reproduce
The problem can be triggered with testshade, Visual Studio 2019, debug configuration.
- Run testshade
>bin\debug\testshade --inbuffer ..\osl-v1.12.6.0-beta\testsuite\struct\test.osl
- Result
0# boost::stacktrace::basic_stacktrace<std::allocator<boost::stacktrace::frame> >::init at C:\WORK\GIT\strala\winbuild\install\deps-debug\include\boost-1_78\boost\stacktrace\stacktrace.hpp:76
1# boost::stacktrace::basic_stacktrace<std::allocator<boost::stacktrace::frame> >::basic_stacktrace<std::allocator<boost::stacktrace::frame> > at C:\WORK\GIT\strala\winbuild\install\deps-debug\include\boost-1_78\boost\stacktrace\stacktrace.hpp:129
2# OpenImageIO_v2_3::Sysutil::stacktrace at C:\WORK\GIT\strala\winbuild\src\oiio-v2.3.12.0\src\libutil\sysutil.cpp:660
3# OpenImageIO_v2_3::stacktrace_signal_handler at C:\WORK\GIT\strala\winbuild\src\oiio-v2.3.12.0\src\libutil\sysutil.cpp:680
4# raise in ucrtbased
5# setmbcp in ucrtbased
6# CrtSetReportHookW2 in ucrtbased
7# VCrtDbgReportA in ucrtbased
8# CrtDbgReport in ucrtbased
9# std::vector<std::shared_ptr<OSL_v1_12::pvt::StructSpec>,std::allocator<std::shared_ptr<OSL_v1_12::pvt::StructSpec> > >::operator[] at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vector:1552
10# OSL_v1_12::pvt::TypeSpec::structspec at C:\WORK\GIT\osl-v1.12.6.0-beta\src\include\osl_pvt.h:175
11# OSL_v1_12::pvt::TypeSpec::structspec at C:\WORK\GIT\osl-v1.12.6.0-beta\src\include\osl_pvt.h:169
12# OSL_v1_12::ShadingSystem::oslquery at C:\WORK\GIT\osl-v1.12.6.0-beta\src\liboslexec\shadingsys.cpp:4216
13# setup_output_images at C:\WORK\GIT\osl-v1.12.6.0-beta\src\testshade\testshade.cpp:1030
14# test_shade at C:\WORK\GIT\osl-v1.12.6.0-beta\src\testshade\testshade.cpp:2043
15# main at C:\WORK\GIT\osl-v1.12.6.0-beta\src\testshade\testshademain.cpp:29
16# invoke_main at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:79
17# __scrt_common_main_seh at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
18# __scrt_common_main at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331
19# mainCRTStartup at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17
20# BaseThreadInitThunk in KERNEL32
21# RtlUserThreadStart in ntdll
Versions
- OSL branch/version: v1.12.6.0-beta
- OS: Windows 11
- C++ compiler: Visual Studio 2019 16.11.18
- LLVM version: 13.0.1
- OIIO version: v1.11.17.0
- 主要言語
- C++
- スター
- 2.3k
- フォーク
- 415
- 平均マージ
- 2日 10時間
- マージ済み PR(30日)
- 14
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
AcademySoftwareFoundation/OpenShadingLanguage のほかの issue
-
build / testing / port / CI
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
AcademySoftwareFoundation/OpenShadingLanguage#2148 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
AcademySoftwareFoundation/OpenShadingLanguage#2109 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 38/100
AcademySoftwareFoundation/OpenShadingLanguage#2175 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
AcademySoftwareFoundation/OpenShadingLanguage#2146 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
AcademySoftwareFoundation/OpenShadingLanguage#2135 ·
メンテナーはふだん 1 日以内に返信
AcademySoftwareFoundation/OpenShadingLanguage の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
espressif/esp-matter#1867 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
cuAmpcorParameter.cpp (CPU pycuampcor) does not compile with libc++: EXIT_FAILURE is undeclaredオープン
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
isce-framework/isce3#387 ·
-
upstream update
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
conan-io/conan-center-index#31055 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信