Read after free in TypeSpec::struct_list()
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- cpp
- Ambito
- compilers, computer-graphics
Direzione di ricerca
Eseguire il comando testshade fornito nella configurazione di debug Windows indicata, quindi esaminare TypeSpec::structspec in src/include/osl_pvt.h e il suo utilizzo da src/liboslexec/shadingsys.cpp. Tracciare il percorso di distruzione di OSLCompiler attraverso SymbolTable::delete_syms(); il lavoro è completato quando il read-after-free riprodotto non si verifica più quando oslquery() o Symbol::print() accede a struct_list().
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- C++
- Stelle
- 2.3k
- Fork
- 414
- Merge medio
- 2g 14h
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di AcademySoftwareFoundation/OpenShadingLanguage
-
build / testing / port / CI
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
AcademySoftwareFoundation/OpenShadingLanguage#2148 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
AcademySoftwareFoundation/OpenShadingLanguage#2109 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
AcademySoftwareFoundation/OpenShadingLanguage#2175 ·
I maintainer di solito rispondono entro 1 giorno
-
Tracesets handling proposalAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
AcademySoftwareFoundation/OpenShadingLanguage#2146 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
AcademySoftwareFoundation/OpenShadingLanguage#2135 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di AcademySoftwareFoundation/OpenShadingLanguage
Issue simili
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 84/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
ROCm/rocm-libraries#12703 ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
isl-org/Open3D#7585 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Feature request
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
qbittorrent/qBittorrent#24975 ·
I maintainer di solito rispondono entro 3 giorni