I use a debug oiio, and release project; in that case I managed to get a
call stack.
`str` in `bool Strutil::get_rest_arguments(const std::string& str,
std::string& base, std::map<std::string, std::string>& result)`
has a problem ("error reading characters of string").
OpenImageIO.dll!OpenImageIO_v2_1::Strutil::get_rest_arguments(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > & str,
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
base,
std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,std::basic_string<char,std::char_traits<char>,std::allocator<char>
> > > > & result) Line 270 C++
OpenImageIO.dll!OpenImageIO_v2_1::ImageInput::create(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
filename, bool do_open, const OpenImageIO_v2_1::ImageSpec * config,
OpenImageIO_v2_1::string_view plugin_searchpath) Line 512 C++
OpenImageIO.dll!OpenImageIO_v2_1::ImageInput::open(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
filename, const OpenImageIO_v2_1::ImageSpec * config) Line 106 C++
> oiioTest.exe!DPXio::ReadFloat(char *) Line 31 C++
Here my function:
auto DPXio::ReadFloat(const char* filename) -> SparseArray<float>*
{
auto in = ImageInput::open(filename);
if (!in) return nullptr;
auto spec = in->spec();
DPXfloat.SetSize(spec);
in->read_image(TypeDesc::FLOAT, DPXfloat.Values);
in->close();
return &DPXfloat;
}
and it is called this way:
auto sut = new DPXio();
auto path =
"C:/sensomovie/C200/A011C118_19041345_CANON/A011C118_19041345_CANON_00001926.DPX";
//auto path =
"C:/sensomovie/C200/A014C203_190414BL_CANON_16bits/A014C203_190414BL_CANON_00001331.DPX";
std::cout << (FileExist(path) ? "File OK: " : "No such file: ") << path
<< "." << endl;
auto result = sut->ReadFloat(path);
if (result == nullptr)
cout << "null result" << endl;
else
{
cout << "colors: " << result->Colors << endl;
cout << "width: " << result->Width << endl;
cout << "height: " << result->Height << endl;
}
The compilation arguments (I'm using VS2019 enterprise, toolset Visual
Studio 2019 (v142), but I have the same with v141):
/permissive- /Yu"pch.h" /GS /GL /W3 /Gy /Zc:wchar_t /I"c:\lib\tiff\include"
/I"c:\lib\openexr\include" /I"c:\lib\oiio\include" /Zi /Gm- /O2 /sdl
/Fd"x64\Release\vc142.pdb" /Zc:inline /fp:precise /D "NDEBUG" /D "_CONSOLE"
/D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oi
/MD /FC /Fa"x64\Release\" /EHsc /nologo /Fo"x64\Release\"
/Fp"x64\Release\oiioTest.pch" /diagnostics:classic
M
Le mar. 23 avr. 2019 à 23:39, till dechent <[email protected]> a
écrit :
> Yes I built version 2.0.6 as a release (x64) and it worked. I also tried
> the DPX you provided and all was good.
>
> Am Di., 23. Apr. 2019 um 21:44 Uhr schrieb Mathieu Prevot <
> [email protected]>:
>
>> Please, can those who could open images with `ImageInput::open(filename)`
>> tell if it was a release or debug build (of their own binary, not oiio's)
>> ? If it was a debug, can you test with a release build ?
>>
>> Many thanks
>> M
>>
>> Le lun. 22 avr. 2019 à 16:35, Mathieu Prevot <[email protected]>
>> a écrit :
>>
>>> Tested with boost 1.68 and 1.70, both are OK with oiio debug, and
>>> opening the DPX file works correctly in that configuration.
>>> Only when I build and use oiio *release*, it fails (with both boost
>>> versions).
>>>
>>> I'm not sure where to go to continue the investigation.
>>>
>>> For repro, my build script; which needs to be run in the ooio-master
>>> folder as is. msbuild needs to be in $path.
>>>
>>> $target = "Visual Studio 15 2017 Win64"
>>>
>>> function configure {
>>> I:\IntelSWTools\compilers_and_libraries_2019.3.203\windows\tbb\bin\
>>> tbbvars.bat intel64 vs2017
>>> cmake.exe -G $target -T v141, host=x64 -j16 `
>>> -DCMAKE_PREFIX_PATH=
>>> "I:/lib/tiff;I:\lib\boost-1.70;I:/lib/zlib;I:/lib/libpng;I:/lib/openexr;I:/lib/libjpegturbo"
>>> `
>>> -DTBB_ROOT_DIR=
>>> "I:/IntelSWTools/compilers_and_libraries/windows/tbb" `
>>> -DCMAKE_INSTALL_PREFIX="I:/lib/oiio-release" `
>>> -DJPEGTURBO_PATH="i:/lib/libjpegturbo" `
>>> -DUSE_QT=0 -DOIIO_BUILD_TESTS=1 -DUSE_PYTHON=0 `
>>> -DPYTHON_EXECUTABLE="I:/intelpython2/python.exe" `
>>> ..
>>> }
>>>
>>> function build {
>>> #"build oiio debug"
>>> #MSBuild.exe OpenImageIO.sln /verbosity:m /m
>>> "build oiio release"
>>> MSBuild.exe OpenImageIO.sln /p:Configuration=Release /verbosity:m /m
>>> }
>>>
>>> function install {
>>> #"install oiio debug"
>>> #MSBuild.exe INSTALL.vcxproj /verbosity:m /m
>>> "install oiio release"
>>> MSBuild.exe INSTALL.vcxproj /p:Configuration=Release /verbosity:m /m
>>> }
>>>
>>> function clean {
>>> if (test-path build) {
>>> remove-item -recurse -force build
>>> }
>>> New-Item -ItemType Directory build
>>> }
>>>
>>> clean
>>> Set-Location build
>>> configure
>>> build
>>> install
>>> Set-Location ..
>>>
>>>
>>> Regards
>>> M
>>>
>>>
>>>
>>> Le sam. 20 avr. 2019 à 19:10, Larry Gritz <[email protected]> a écrit :
>>>
>>>> I'm not sure what else I can do unless I either have a case I can
>>>> reproduce on my end, or a more full stack trace or at least indication of
>>>> what specific line in the OIIO is where the exception is thrown (just
>>>> knowing precisely where the crash happens may be enough do diagnose or
>>>> defensively program around).
>>>>
>>>>
>>>> On Apr 19, 2019, at 2:11 AM, till dechent <[email protected]>
>>>> wrote:
>>>>
>>>> ImageInput::open() works for me with the downloaded DPX on version
>>>> 2.0.6.
>>>>
>>>> Am Do., 18. Apr. 2019 um 18:41 Uhr schrieb Stephen Blair <
>>>> [email protected]>:
>>>>
>>>>> It doesn't crash on Windows for me, but that's with OpenImageIO-Arnold
>>>>> 2.1.0dev
>>>>>
>>>>> On Thu, Apr 18, 2019 at 1:07 PM Larry Gritz <[email protected]> wrote:
>>>>>
>>>>>> Hi, thanks. I'm able to open that DPX file on my end (not on
>>>>>> Windows), so I don't think it's a corrupt file.
>>>>>>
>>>>>> Can you build all of OIIO in Debug mode (not Release) and use the
>>>>>> debugger to find out what file and line is where the actual crash is
>>>>>> occurring? The screenshot you provided only shows where in your unit test
>>>>>> it was, so the actual crash could be practically anywhere inside what
>>>>>> happens within the open() call.
>>>>>>
>>>>>> I'm sorry I'm not easily able to help, I don't have access to a
>>>>>> Windows machine.
>>>>>>
>>>>>> Can somebody else out there who uses OIIO on Windows please do us a
>>>>>> favor and download this DPX file in the links below, then try anything
>>>>>> that
>>>>>> forces an open (e.g., 'iinfo -v -stats blah.dpx') and report what
>>>>>> happens?
>>>>>> Does this crash for everybody? If anyone can reproduce, do you have any
>>>>>> ideas or can you get closer to finding what line within the OIIO code is
>>>>>> the source of the problem?
>>>>>>
>>>>>> -- lg
>>>>>>
>>>>>>
>>>>>> On Apr 18, 2019, at 1:16 AM, Mathieu Prevot <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Following the documentation "4.1 Image Input Made Simple";
>>>>>> I'm having an exception at opening a dpx file and tiff file from
>>>>>> simple code:
>>>>>>
>>>>>> auto in = ImageInput::open(filename); // here
>>>>>> if (!in) return;
>>>>>>
>>>>>> Exception thrown at 0x00007FFDBEBDA388 in testhost.exe: Microsoft C++
>>>>>> exception: Microsoft::VisualStudio::CppUnitTestFramework::CSEException
>>>>>>
>>>>>> More detailed information:
>>>>>> https://1drv.ms/u/s!AlUmbfQiLoTZhFQir--TvMglJ0iT
>>>>>>
>>>>>> Images:
>>>>>> https://1drv.ms/f/s!AlUmbfQiLoTZhFKpXHJcchpi0hBY
>>>>>>
>>>>>> I'm using the master version of oiio in windows with tiff 4.0.10,
>>>>>> openexr 2.3.0, zlib 1.2.11, libpng 1.6.35, boost 1.70, libjpegturbo
>>>>>> 2.0.3,
>>>>>> tbb 2019.3; cmake 3.13.4, VS2017.
>>>>>>
>>>>>> I'm running this in a c++ unit test, (with some c code since data
>>>>>> will be used in an interop context).
>>>>>>
>>>>>> TEST_CLASS(DPXioTests)
>>>>>> {
>>>>>> public:
>>>>>> TEST_METHOD(Instance)
>>>>>> {
>>>>>> auto sut = new DPXio();
>>>>>> Assert::IsNotNull(sut);
>>>>>> }
>>>>>>
>>>>>> TEST_METHOD(ReadDPX)
>>>>>> {
>>>>>> auto sut = new DPXio();
>>>>>> auto path =
>>>>>> "C:/sensomovie/C200/A011C118_19041345_CANON/A011C118_19041345_CANON_00001926.DPX";
>>>>>> if(!FileExist(path))
>>>>>> {
>>>>>> wstringstream s;
>>>>>> s << "No such file: " << path << ".";
>>>>>> Logger::WriteMessage(s.str().c_str());
>>>>>> return;
>>>>>> }
>>>>>> try
>>>>>> {
>>>>>> auto result = sut->Read(path);
>>>>>> Assert::IsNotNull(result);
>>>>>> Assert::IsTrue(result->Colors >= 3);
>>>>>> Assert::IsTrue(result->Height == 2160);
>>>>>> Assert::IsTrue(result->Width == 4096);
>>>>>> }
>>>>>> catch (Exception& e)
>>>>>> {
>>>>>> auto lastErrorID = GetLastError();
>>>>>> if (lastErrorID != 0)
>>>>>> {
>>>>>> LPVOID errorBuffer{};
>>>>>> FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
>>>>>> FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
>>>>>> nullptr, lastErrorID,
>>>>>> MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&errorBuffer, 0,
>>>>>> nullptr);
>>>>>> wstringstream s;
>>>>>> s << "Exception: " << e.what() << ". ID: "<<
>>>>>> lastErrorID << ". Message: " << errorBuffer<< ".";
>>>>>> Logger::WriteMessage(s.str().c_str());
>>>>>> }
>>>>>> else
>>>>>> {
>>>>>> wstringstream s;
>>>>>> s << "Exception: " << e.what();
>>>>>> Logger::WriteMessage(s.str().c_str());
>>>>>> }
>>>>>> }
>>>>>> }
>>>>>> };
>>>>>>
>>>>>>
>>>>>> Mathieu
>>>>>> _______________________________________________
>>>>>> Oiio-dev mailing list
>>>>>> [email protected]
>>>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Larry Gritz
>>>>>> [email protected]
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Oiio-dev mailing list
>>>>>> [email protected]
>>>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>>>>
>>>>> _______________________________________________
>>>>> Oiio-dev mailing list
>>>>> [email protected]
>>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>>>
>>>> _______________________________________________
>>>> Oiio-dev mailing list
>>>> [email protected]
>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>>
>>>>
>>>> --
>>>> Larry Gritz
>>>> [email protected]
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Oiio-dev mailing list
>>>> [email protected]
>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>>
>>> _______________________________________________
>> Oiio-dev mailing list
>> [email protected]
>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>
> _______________________________________________
> Oiio-dev mailing list
> [email protected]
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>
_______________________________________________
Oiio-dev mailing list
[email protected]
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org