Wed 07 Jan 2009 08:46:31 PM UTC, comment #3:
Uhm, the IOChannel::read interface is not fully documented.
Docs don't mention what's the semantic of the returned int.
Curl adapter seems to assume the number of bytes actually read is returned.
If this is the case, a 404 with no content should return 0.
getFileType from impl.cpp checks the return from read
and considers it an error IFF >= 3 ??
|
Wed 07 Jan 2009 08:38:17 PM UTC, comment #2:
This too:
1379:67553328] 21:35:37 ERROR: HTTP response 404 from url http://www.ourayicefestival.com/gallery/2008/thumbs/image31.jpg
==1379==
==1379== Thread 1:
==1379== Conditional jump or move depends on uninitialised value(s)
==1379== at 0x56D27C7: gnash::create_movie(std::auto_ptr<gnash::IOChannel>, std::string const&, gnash::RunInfo const&, bool) (impl.cpp:369)
==1379== by 0x56D2F2B: gnash::create_movie(gnash::URL const&, gnash::RunInfo const&, char const, bool, std::string const) (impl.cpp:343)
==1379== by 0x56D324E: gnash::create_library_movie(gnash::URL const&, gnash::RunInfo const&, char const, bool, std::string const) (impl.cpp:642)
==1379== by 0x5687DBA: gnash::MovieClip::loadMovie(gnash::URL const&, std::string const*) (MovieClip.cpp:2407)
==1379== by 0x5764AD5: gnash::MovieClipLoader::loadClip(std::string const&, gnash::MovieClip&) (MovieClipLoader.cpp:191)
==1379== by 0x576541D: _ZN5gnashL24moviecliploader_loadclipERKNS_7fn_callE (MovieClipLoader.cpp:299)
==1379== by 0x560AC64: gnash::builtin_function::operator()(gnash::fn_call const&) (builtin_function.h:102)
==1379== by 0x581FE36: gnash::call_method(gnash::as_value const&, gnash::as_environment, gnash::as_object, std::auto_ptr<std::vector<gnash::as_value, std::allocator<gnash::as_value> > >, gnash::as_object, gnash::movie_definition const) (action.cpp:65)
==1379== by 0x57FBDC9: gnash::SWF::SWFHandlers::ActionCallMethod(gnash::ActionExec&) (ASHandlers.cpp:3458)
==1379== by 0x57F5929: gnash::SWF::SWFHandlers::execute(gnash::SWF::ActionType, gnash::ActionExec&) const (ASHandlers.cpp:444)
==1379== by 0x5817F0E: gnash::ActionExec::operator()() (ActionExec.cpp:288)
==1379== by 0x56BAC87: gnash::swf_function::operator()(gnash::fn_call const&) (swf_function.cpp:375)
==1379==
libcurl knows it's an error, so really I wonder why we still try to read it. We often get html back as a 404 response and still try to load it, and I guess in this case we don't get anything other than the html error, hence the uninitialized bytes.
|
Wed 07 Jan 2009 08:27:25 PM UTC, comment #1:
I got lots of uninitialized values in libcurl too, but after spending hours on a bisect, realized out that it was jemalloc causing them (it wasn't enabled on the bisect build).
I can't reproduce the reported bug with any configuration, though.
A build without jemalloc has some problems in impl.cpp (getFileType).
|