I'm not certain, and this seems likely to smells there. I know for certain that oiioTest debug + oiio debug works with full DCI4k 10bits image, but fails with a cropped sample I shared. But I have a release OpenEXR.
I guess I should check the whole tree of dependencies. M Le jeu. 25 avr. 2019 à 21:02, Thiago Ize <[email protected]> a écrit : > Are you sure all the libraries and executables are built with the same > settings? With visual studio (at least the older versions I used) mixing > for instance debug and release builds can result in different versions of > core libraries being used and you'll get crashes. > > On Thu, Apr 25, 2019 at 12:57 PM Larry Gritz <[email protected]> wrote: > >> Right, when it accesses the characters in the callee, it fails for some >> reason. >> >> So the additional line I wanted to add prints the address of the >> characters, before trying to access them. I want to know if the caller and >> callee disagree on *where* those characters are in memory, or are they both >> looking at the same memory but for some other reason the callee can't touch >> them? >> >> Oh, one more! >> >> std::cout << "str addr = " << (void*)&str << std::endl; >> std::cout << "str len " << str.size() << std::endl; >> std::cout << "str char addr = " << (void*)str.c_str() << std::endl; >> std::cout << "str first char = " << int(str[0]) << std::endl; >> std::cout << "str chars = '" << str << "'" << std::endl; >> >> Can it access the first character, or is it "running off the end of the >> string", so to speak, when it fails. >> >> >> >> On Apr 25, 2019, at 11:52 AM, Mathieu Prevot <[email protected]> >> wrote: >> >> In the callee, whatever I try to do it throws. >> Hence I know I'll get something from my code, and nothing from oiio >> function. >> I tried to ask a local copy of str, it just throws at `string localstr = >> str;` >> >> I think it should be wiser to pass string by value and not by reference. >> >> Any thought, objection ? >> M >> >> Le jeu. 25 avr. 2019 à 20:43, Larry Gritz <[email protected]> a écrit : >> >>> Hmmm. OK, one more test: >>> >>> In both of the places (caller and callee), can you add one more line in >>> this spot: >>> >>> std::cout << "str addr = " << (void*)&str << std::endl; >>> std::cout << "str len " << str.size() << std::endl; >>> std::cout << "str char addr = " << (void*)str.c_str() << std::endl; >>> std::cout << "str chars = '" << str << "'" << std::endl; >>> >>> ??? >>> >>> >>> >>> On Apr 25, 2019, at 10:36 AM, Mathieu Prevot <[email protected]> >>> wrote: >>> >>> The output with the modified sources as you requested: >>> >>> filename2 addr = 000000C9E28FF930 >>> filename2 len = 79 >>> filename2 = >>> 'C:/sensomovie/C200/A011C118_19041345_CANON/A011C118_19041345_CANON_00002043.DPX' >>> str addr = 000000C9E28FF930 >>> str len 79 >>> str chars = ' >>> >>> Access violation reading location 0xFFFFFFFFFFFFFFFE >>> >>> It seems it complains about being/not able to read the string, even >>> though the address and length are correct. >>> >>> M >>> >>> >>> Le jeu. 25 avr. 2019 à 18:51, Larry Gritz <[email protected]> a écrit : >>> >>>> So that minimal example also fails? >>>> >>>> Did you add those extra printf lines on the OIIO side that I suggested >>>> a couple messages ago? What did they print? >>>> >>>> OK, next experiment: >>>> >>>> Copy those lines inside main() from my minimal example below, and paste >>>> them into OIIO src/info/iinfo.cpp, right in its main() before it does >>>> anything else. The point of this test is to see what happens when we are >>>> absolutely sure that the program calling this sequence is built with all >>>> the same compile flags and headers as the OSL library itself. Then build >>>> OIIO in whatever configuration was producing failures reliably before, and >>>> try by running "iinfo" (it's not the "real" iinfo now, it's just a harness >>>> for running that minimal example). What happens, and what does it print >>>> with those debugging statements? >>>> >>>> >>>> >>>> On Apr 25, 2019, at 6:44 AM, Mathieu Prevot <[email protected]> >>>> wrote: >>>> >>>> In the oiioTest project, there is no test framework, no specific c++ >>>> standard is specified (an noe was specified at oiio build). >>>> I'm using v141 toolset in both (the default VS2017 toolset). >>>> The truly minimal program fails too. >>>> Can you use the source and script I provided to reproduce the memory >>>> error ? >>>> >>>> M >>>> >>>> >>>> Le mer. 24 avr. 2019 à 23:59, Larry Gritz <[email protected]> a écrit : >>>> >>>>> That's interesting. Definitely makes me think it's some kind of >>>>> mismatch between your module and OIIO, since the all-OIIO code (using >>>>> oiiotool, which calls the same libOpenImageIO APIs underneath) seems fine. >>>>> >>>>> Are you sure that OIIO and your code was definitely built with the >>>>> same compiler version? Same flags indicating the C++ standard to use or >>>>> any >>>>> other such things that may be relevant for MSVS? >>>>> >>>>> What I would recommend next is trying to find the *minimal* >>>>> separately-compiled program that exhibits the problem. Eliminate your >>>>> testing framework and all other cruft. Would the following truly minimal >>>>> program also fail? >>>>> >>>>> #include <OpenImageIO/imageio.h> >>>>> int main (int argc, char *argv[]); >>>>> { >>>>> const char* filename = >>>>> "C:\sensomovie\C200\A011C118_19041345_CANON\A011C118_19041345_CANON_00000001.DPX" >>>>> auto in = ImageInput::open(filename); >>>>> if (in) { >>>>> printf ("Opened successfully\n"); >>>>> printf ("Opened successfully, format is %s\n", >>>>> in->format_name()); >>>>> } else { >>>>> printf ("Fail\n"); >>>>> return 1; >>>>> } >>>>> return 0; >>>>> } >>>>> >>>>> >>>>> On Apr 24, 2019, at 2:27 PM, Mathieu Prevot <[email protected]> >>>>> wrote: >>>>> >>>>> No, it only crashes when I use the API in release, I use the API in >>>>> debug it works too. The output: >>>>> >>>>> .\oiiotool.exe -info -v >>>>> C:\sensomovie\C200\A011C118_19041345_CANON\A011C118_19041345_CANON_00000001. >>>>> DPX >>>>> Reading >>>>> C:\sensomovie\C200\A011C118_19041345_CANON\A011C118_19041345_CANON_00000001.DPX >>>>> C:\sensomovie\C200\A011C118_19041345_CANON\A011C118_19041345_CANON_00000001.DPX >>>>> : 4096 x 2160, 3 channel, uint10 dpx >>>>> channel list: R, G, B >>>>> DateTime: "2019:04:13 16:14:30" >>>>> Orientation: 1 (normal) >>>>> PixelAspectRatio: 1 >>>>> Software: "CANON" >>>>> dpx:Colorimetric: "Unspecified video" >>>>> dpx:DittoKey: 1 >>>>> dpx:EndOfImagePadding: 0 >>>>> dpx:EndOfLinePadding: 0 >>>>> dpx:FramePosition: 1 >>>>> dpx:FrameRate: 59.9401 >>>>> dpx:HeldCount: 1 >>>>> dpx:ImageDescriptor: "RGB" >>>>> dpx:InputDeviceSerialNumber: "373449900026" >>>>> dpx:Interlace: 0 >>>>> dpx:Packing: "Filled, method A" >>>>> dpx:SequenceLength: 2931 >>>>> dpx:ShutterAngle: 0 >>>>> dpx:SourceDateTime: "2019:04:13 16:14:30" >>>>> dpx:SourceImageFileName: "A011C118_19041345_CANON.CRM" >>>>> dpx:TemporalFrameRate: 59.9401 >>>>> dpx:TimeCode: "00:42:11;23" >>>>> dpx:Transfer: "Unspecified video" >>>>> dpx:UserBits: 0 >>>>> dpx:UserData: 67, 65, 78, 79, 78, 95, 82, 65, 87, 95, 68, 69, 86, >>>>> 69, 76, 79, ... [63488 x uint8] >>>>> dpx:Version: "V2.0" >>>>> oiio:BitsPerSample: 10 >>>>> smpte:TimeCode: 00:42:11:23 >>>>> >>>>> Mathieu >>>>> >>>>> Le mer. 24 avr. 2019 à 23:24, Larry Gritz <[email protected]> a >>>>> écrit : >>>>> >>>>>> Matthieu, can you confirm: >>>>>> >>>>>> * Does `oiiotool -info -v yourfile.dpx` also crash (with the same >>>>>> filename as you used before, of course)? Or does it only crash when the >>>>>> OIIO API calls are made from your program? >>>>>> >>>>>> >>>>>> >>>>>> On Apr 24, 2019, at 1:51 PM, Mathieu Prevot <[email protected]> >>>>>> wrote: >>>>>> >>>>>> Hello. Many thanks Till for your previous posts and proposition. >>>>>> >>>>>> I'm curious to know if the problems can be reproduced. >>>>>> Here are the binaries of oiio, openexr and few dependencies, as well >>>>>> as their source and the powershell script I use to >>>>>> configure/build/install >>>>>> those libraries. >>>>>> There is also the oiioTest project which I use to open the DPX 10bits >>>>>> image. >>>>>> The debug and release configuration are those I used to far. The >>>>>> debug should work and the release should trigger the memory exception, at >>>>>> least certainly when you ask to inline whenever possible. >>>>>> I'm using boost 1.70, the available for download binaries. Everything >>>>>> in x64. >>>>>> >>>>>> https://1drv.ms/f/s!AlUmbfQiLoTZhFUTthzeUkWoB3rc >>>>>> >>>>>> I built the libraries with the v141 toolset (the latest that comes >>>>>> with VS2017; it also comes with VS2019). >>>>>> I built the oiioTest with v142 as well as v141, and I observed the >>>>>> same result in both cases. >>>>>> I'll do them again to be certain. >>>>>> I'll try Larry's patches to get to know more, and then post here >>>>>> again. >>>>>> >>>>>> I'll also try Till's binaries, but I can tell already that those >>>>>> binaries are missing: >>>>>> RAW_R.DLL (?) >>>>>> BOOST_FILESYSTEM-VC141-MT-X64-1_66.DLL (no problem to get those boost >>>>>> libraries) >>>>>> BOOST_THREAD-VC141-MT-X64-1_66.DLL >>>>>> LZMA.DLL (?) >>>>>> Maybe a script would be easier to use than binaries. >>>>>> >>>>>> M >>>>>> >>>>>> >>>>>> Le mer. 24 avr. 2019 à 20:30, till dechent <[email protected]> >>>>>> a écrit : >>>>>> >>>>>>> My guess would be that VS2019 being the problem is unlikely since >>>>>>> Mathieu also tried with the vs141 toolset. >>>>>>> >>>>>>> To narrow things down between a compile issue and a code issue you >>>>>>> could grab my binaries and see if your code works with them: >>>>>>> https://github.com/ttddee/oiio-msvc2017 >>>>>>> >>>>>>> Or maybe try a build without the command line and go straight from >>>>>>> CMake to Visual Studio to compile from there. >>>>>>> >>>>>>> I have a Windows machine here so if you need me to try anything, >>>>>>> happy to help! >>>>>>> >>>>>>> >>>>>>> >>>>>>> Am Mi., 24. Apr. 2019 um 18:41 Uhr schrieb Larry Gritz < >>>>>>> [email protected]>: >>>>>>> >>>>>>>> I'm sorry to ask you to be my debugging robot, but since I can't >>>>>>>> seem to reproduce on my end... >>>>>>>> >>>>>>>> >>>>>>>> So let's try another thing. At the call site, >>>>>>>> >>>>>>>> std::cout << "reading (float) file: " << filename << "\n"; >>>>>>>> string filename2 = filename; >>>>>>>> std::cout << "filename2 addr = " << (void*)&filename2 << >>>>>>>> std::endl; >>>>>>>> std::cout << "filename2 len = " << filename2.size() << >>>>>>>> std::endl; >>>>>>>> std::cout << "filename2 = '" << filename2 << "'\n"; >>>>>>>> auto in = ImageInput::open(filename2); >>>>>>>> >>>>>>>> And inside get_rest_arguments: >>>>>>>> >>>>>>>> bool >>>>>>>> Strutil::get_rest_arguments(const std::string& str, std::string& >>>>>>>> base, >>>>>>>> std::map<std::string, std::string>& >>>>>>>> result) >>>>>>>> { >>>>>>>> std::cout << "str addr = " << (void*)&str << std::endl; >>>>>>>> std::cout << "str len " << str.size() << std::endl; >>>>>>>> std::cout << "str chars = '" << str << "'" << std::endl; >>>>>>>> std::string::size_type mark_pos = str.find_first_of("?"); >>>>>>>> std::cout << "result of find_first_of is " << mark_pos << >>>>>>>> std::endl; >>>>>>>> ... rest of function as before ... >>>>>>>> >>>>>>>> So I'm just trying to establish that we're really getting a >>>>>>>> reference to the same string we thing we were passing, and also >>>>>>>> whether any >>>>>>>> access to str (including the length) is problematic, or just accessing >>>>>>>> the >>>>>>>> characters. >>>>>>>> >>>>>>>> >>>>>>>> Now, I have one other hypothesis in the back of my mind. You said >>>>>>>> you were using VS2019. I know that people have been using 2015 and >>>>>>>> 2017, >>>>>>>> but I'm wondering if 2019 is the issue here. In particular, is there >>>>>>>> any >>>>>>>> chance that VS2019 has changed the representation of std::string (akin >>>>>>>> to >>>>>>>> how gcc changed its std::string representation in the ~gcc5 time >>>>>>>> frame)? >>>>>>>> And perhaps is it possible that OIIO's dll itself was compiled with one >>>>>>>> string representation but your program (separate compilation unit) >>>>>>>> used an >>>>>>>> incompatible one, so that you are passing what you think is a >>>>>>>> reference to >>>>>>>> a std::string but the OIIO code it's calling has a different idea of >>>>>>>> the >>>>>>>> internal layout of a std::string? >>>>>>>> >>>>>>>> Or is there any other way that the caller and callee (which are in >>>>>>>> different compilation units and different dlls) might have a different >>>>>>>> idea >>>>>>>> of what a std::string means? >>>>>>>> >>>>>>>> Ring any bells for anyone? >>>>>>>> >>>>>>>> >>>>>>>> On Apr 24, 2019, at 1:22 AM, Mathieu Prevot < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>> Yes, there might be something wrong in my locales, `str` could not >>>>>>>> be read ( "error reading characters of string" , in my previous post) >>>>>>>> and >>>>>>>> `filename` was undefined. >>>>>>>> However, that's not necessarily the problem, the memory is >>>>>>>> allocated and I have the same size as in debug (79 characters). >>>>>>>> Before ImageInput::open, I print filename to stdout, and I see a >>>>>>>> correct result. >>>>>>>> >>>>>>>> cout << "reading (float) file: " << filename; >>>>>>>> auto in = ImageInput::open(filename); >>>>>>>> >>>>>>>> The right way to be able to read filename is to make a local copy; >>>>>>>> also I make certain that I got the correct type (string), even though >>>>>>>> string has a default constructor from const char. >>>>>>>> >>>>>>>> cout << "reading (float) file: " << filename; >>>>>>>> string filename2 = filename; >>>>>>>> auto in = ImageInput::open(filename2); >>>>>>>> >>>>>>>> It might be related to the character set, but I don't think since >>>>>>>> it did not change from debug to release. >>>>>>>> >>>>>>>> https://stackoverflow.com/questions/9349342/about-the-character-set-option-in-visual-studio >>>>>>>> >>>>>>>> In order to acertain this, I did set the character set to "not set" >>>>>>>> and tried also "unicode", but I stil got the same memory error. >>>>>>>> Here the compile command with "not set" ( /D "_UNICODE" /D >>>>>>>> "UNICODE" are removed): >>>>>>>> >>>>>>>> /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" /errorReport:prompt /WX- /Zc:forScope /Gd /Oi >>>>>>>> /MD >>>>>>>> /std:c++17 /FC /Fa"x64\Release\" /EHsc /nologo /Fo"x64\Release\" >>>>>>>> /Fp"x64\Release\oiioTest.pch" /diagnostics:classic >>>>>>>> >>>>>>>> `auto` was `const char*`, therefore did not change a thing. >>>>>>>> >>>>>>>> With the new lines you suggested, the memory error happens at the >>>>>>>> first str usage, ie., str.size(). >>>>>>>> >>>>>>>> std::cout << "str len " << str.size() << " = '" << str << "'" << >>>>>>>> std::endl; // memory error here >>>>>>>> std::string::size_type mark_pos = str.find_first_of("?"); >>>>>>>> std::cout << "result of find_first_of is " << mark_pos << >>>>>>>> std::endl; >>>>>>>> >>>>>>>> I tried the local copy with: >>>>>>>> >>>>>>>> std::string str2 = str; // memory error here >>>>>>>> std::string::size_type mark_pos2 = str2.find_first_of("?"); >>>>>>>> std::string::size_type mark_pos = str.find_first_of("?"); >>>>>>>> >>>>>>>> The memory error happens at the str2 affectation; str has size 79 >>>>>>>> (expected), and cannot be read, str2 has size 0, allocated 0. >>>>>>>> >>>>>>>> Not sure where to go next. >>>>>>>> Mathieu >>>>>>>> >>>>>>>> >>>>>>>> Le mer. 24 avr. 2019 à 08:26, Larry Gritz <[email protected]> a >>>>>>>> écrit : >>>>>>>> >>>>>>>>> Do you know what your "locale" is? Anything unusual? >>>>>>>>> >>>>>>>>> I'm also wondering about the /D "_UNICODE" /D "UNICODE" >>>>>>>>> What happens if you don't do that? >>>>>>>>> >>>>>>>>> Your line, >>>>>>>>> >>>>>>>>> auto path = >>>>>>>>> "C:/sensomovie/C200/A011C118_19041345_CANON/A011C118_19041345_CANON_00001926.DPX"; >>>>>>>>> >>>>>>>>> >>>>>>>>> I wonder if you instead used >>>>>>>>> >>>>>>>>> const char* path = >>>>>>>>> "C:/sensomovie/C200/A011C118_19041345_CANON/A011C118_19041345_CANON_00001926.DPX"; >>>>>>>>> >>>>>>>>> if that changes anything? >>>>>>>>> >>>>>>>>> The other idea I had is in get_rest_arguments >>>>>>>>> (src/libutil/strutil.cpp), could you instrument it like this just to >>>>>>>>> see >>>>>>>>> what happens: >>>>>>>>> >>>>>>>>> bool >>>>>>>>> Strutil::get_rest_arguments(const std::string& str, std::string& >>>>>>>>> base, >>>>>>>>> std::map<std::string, std::string>& >>>>>>>>> result) >>>>>>>>> { >>>>>>>>> std::cout << "str len " << str.size() << " = '" << str << "'" >>>>>>>>> << std::endl; >>>>>>>>> std::string::size_type mark_pos = str.find_first_of("?"); >>>>>>>>> std::cout << "result of find_first_of is " << mark_pos << >>>>>>>>> std::endl; >>>>>>>>> ... rest of function as before ... >>>>>>>>> >>>>>>>>> and see if there is anything interesting printed immediately prior >>>>>>>>> to the crash? >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Apr 23, 2019, at 2:53 PM, Mathieu Prevot < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>> 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 >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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 >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> 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 >>>>> >>>>> >>>>> -- >>>>> 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 >>>> >>>> >>>> -- >>>> 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 >>> >>> >>> -- >>> 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 >> >> >> -- >> 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
