RESOLVED WONTFIX 89341
[Chromium] iccjpeg doesn't work with browser_tests
https://bugs.webkit.org/show_bug.cgi?id=89341
Summary [Chromium] iccjpeg doesn't work with browser_tests
Hajime Morrita
Reported 2012-06-18 03:18:50 PDT
hbono@ kindly told me that some browser_tests runs renderer in a separate thread and that breaks this assumption. ------------ Failing build: http://build.chromium.org/p/chromium.webkit/builders/Win%20%28dbg%29/builds/6633 Stack trace (It looks that the callstack is broken): ASSERTION FAILED: isMainThread() Backtrace: WebKit::WebAccessibilityObject::canSetFocusAttribute [0x67629896+24421926] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x676297A5+24421685] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x676292CD+24420445] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x6762A931+24426177] wk_png_get_y_pixels_per_meter [0x73627BD5+26440] wk_png_get_y_pixels_per_meter [0x736259E6+17753] wk_png_get_y_pixels_per_meter [0x736253FE+16241] wk_png_get_y_pixels_per_meter [0x7362538E+16129] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x6762AA7B+24426507] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x6762A676+24425478] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x67628FF7+24419719] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x674F4BC3+23157075] WebKit::WebAccessibilityObject::canSetFocusAttribute [0x6602B5EC+1360764] webkit_glue::WebFileUtilitiesImpl::operator= [0x7026EE22+455323] ovly_debug_event [0x01BD9613+890083] ovly_debug_event [0x01BE0FB4+921220] ovly_debug_event [0x01BE0EA1+920945] ovly_debug_event [0x01BE0C6D+920381] logging::SetMinLogLevel [0x73E2001F+398312] logging::SetMinLogLevel [0x73E26B9F+425832] logging::SetMinLogLevel [0x73E26E23+426476] logging::SetMinLogLevel [0x73E27C96+430175] logging::SetMinLogLevel [0x73E3EE94+524893] logging::SetMinLogLevel [0x73E3E0D2+521371] logging::SetMinLogLevel [0x73DD2B2C+81653] logging::SetMinLogLevel [0x73E26789+424786] logging::SetMinLogLevel [0x73E264DE+424103] logging::SetMinLogLevel [0x73E257C0+420745] logging::SetMinLogLevel [0x73FA23B6+1980287] logging::SetMinLogLevel [0x73FA256B+1980724] logging::SetMinLogLevel [0x73F9E840+1965065] BaseThreadInitThunk [0x74B7339A+18] RtlInitializeExceptionChain [0x771A9EF2+99] RtlInitializeExceptionChain [0x771A9EC5+54] Starting tests...
Attachments
Hajime Morrita
Comment 1 2012-06-18 03:26:32 PDT
Landed a bandaid fix: http://trac.webkit.org/changeset/120582 A straightforward fix might be calling this function somehow from a WebKit initialization routine.
Hironori Bono
Comment 2 2012-06-18 03:30:27 PDT
Greetings, This is the actual stacktrace captured on my Win7 PC + VS2010 when running "browser_tests.exe --gtest_filter=BrowserActionApiTest.Basic". I wish it helps. Backtrace: webkit.dll!WebCore::ImageDecoder::qcmsOutputDeviceProfile() Line 307 C++ webkit.dll!WebCore::PNGImageReader::createColorTransform(const WTF::Vector<char,0> & colorProfile={...}, bool hasAlpha=true) Line 196 + 0x5 bytes C++ webkit.dll!WebCore::PNGImageDecoder::headerAvailable() Line 347 C++ webkit.dll!WebCore::headerAvailable(png_struct_def * png=0x1625bfa8, png_info_struct * __formal=0x1625fe38) Line 96 C++ libpng.dll!wk_png_push_have_info(png_struct_def * png_ptr=0x1625bfa8, png_info_struct * info_ptr=0x1625fe38) Line 1717 + 0x15 bytes C libpng.dll!wk_png_push_read_chunk(png_struct_def * png_ptr=0x1625bfa8, png_info_struct * info_ptr=0x1625fe38) Line 333 + 0xd bytes C libpng.dll!wk_png_process_some_data(png_struct_def * png_ptr=0x1625bfa8, png_info_struct * info_ptr=0x1625fe38) Line 64 + 0xd bytes C libpng.dll!wk_png_process_data(png_struct_def * png_ptr=0x1625bfa8, png_info_struct * info_ptr=0x1625fe38, unsigned char * buffer=0x1625b310, unsigned int buffer_size=2799) Line 41 + 0xd bytes C webkit.dll!WebCore::PNGImageReader::decode(const WebCore::SharedBuffer & data={...}, bool sizeOnly=true) Line 162 + 0x1d bytes C++ webkit.dll!WebCore::PNGImageDecoder::decode(bool onlySize=true) Line 544 + 0x23 bytes C++ webkit.dll!WebCore::PNGImageDecoder::isSizeAvailable() Line 241 C++ webkit.dll!WebCore::ImageSource::isSizeAvailable() Line 99 + 0x1b bytes C++ webkit.dll!WebKit::WebImage::fromData(const WebKit::WebData & data={...}, const WebKit::WebSize & desiredSize={...}) Line 54 + 0x8 bytes C++ glue.dll!webkit_glue::ImageDecoder::Decode(const unsigned char * data=0x1625a798, unsigned int size=2799) Line 29 + 0x40 bytes C++ browser_tests.exe!ImageLoadingTracker::ImageLoader::LoadOnFileThread(const ExtensionResource & resource={...}, const gfx::Size & max_size={...}, int id=0) Line 103 + 0x1f bytes C++ browser_tests.exe!base::internal::RunnableAdapter<void (__thiscall ImageLoadingTracker::ImageLoader::*)(ExtensionResource const &,gfx::Size const &,int)>::Run(ImageLoadingTracker::ImageLoader * object=0x16259b18, const ExtensionResource & a1={...}, const gfx::Size & a2={...}, const int & a3=0) Line 309 + 0x35 bytes C++ browser_tests.exe!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall ImageLoadingTracker::ImageLoader::*)(ExtensionResource const &,gfx::Size const &,int)>,void __cdecl(ImageLoadingTracker::ImageLoader * const &,ExtensionResource const &,gfx::Size const &,int const &)>::MakeItSo(base::internal::RunnableAdapter<void (__thiscall ImageLoadingTracker::ImageLoader::*)(ExtensionResource const &,gfx::Size const &,int)> runnable={...}, ImageLoadingTracker::ImageLoader * const & a1=0x16259b18, const ExtensionResource & a2={...}, const gfx::Size & a3={...}, const int & a4=0) Line 958 C++ browser_tests.exe!base::internal::Invoker<4,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall ImageLoadingTracker::ImageLoader::*)(ExtensionResource const &,gfx::Size const &,int)>,void __cdecl(ImageLoadingTracker::ImageLoader *,ExtensionResource const &,gfx::Size const &,int),void __cdecl(ImageLoadingTracker::ImageLoader *,ExtensionResource,gfx::Size,int)>,void __cdecl(ImageLoadingTracker::ImageLoader *,ExtensionResource const &,gfx::Size const &,int)>::Run(base::internal::BindStateBase * base=0x1625a378) Line 1569 + 0x40 bytes C++ base.dll!base::Callback<void __cdecl(void)>::Run() Line 272 + 0xe bytes C++ base.dll!MessageLoop::RunTask(const base::PendingTask & pending_task={...}) Line 467 C++ base.dll!MessageLoop::DeferOrRunPendingTask(const base::PendingTask & pending_task={...}) Line 480 C++ base.dll!MessageLoop::DoWork() Line 654 + 0xc bytes C++ base.dll!base::MessagePumpForUI::DoRunLoop() Line 239 + 0x1d bytes C++ base.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate=0x13dafac8, base::MessagePumpDispatcher * dispatcher=0x00000000) Line 64 + 0xf bytes C++ base.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate=0x13dafac8) Line 48 + 0x1c bytes C++ base.dll!MessageLoop::RunInternal() Line 424 + 0x29 bytes C++ base.dll!MessageLoop::RunHandler() Line 398 C++ base.dll!MessageLoop::Run() Line 308 C++ base.dll!base::Thread::Run(MessageLoop * message_loop=0x13dafac8) Line 134 C++ base.dll!base::Thread::ThreadMain() Line 169 + 0x16 bytes C++ base.dll!base::`anonymous namespace'::ThreadFunc(void * params=0x125c3978) Line 59 + 0xf bytes C++ kernel32.dll!753d339a() [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] ntdll.dll!77c29ef2() ntdll.dll!77c29ec5() Regards, Hironori Bono
Hironori Bono
Comment 3 2012-06-18 19:48:07 PDT
Greetings, To look at this stacktrace, it seems extension code decodes images on a FILE thread with WebKit: <http://code.google.com/searchframe#OAMlx_jo-ck/src/chrome/browser/extensions/image_loading_tracker.cc&exact_package=chromium&l=103>. Regards, Hironori Bono
Adam Barth
Comment 4 2012-06-18 22:14:56 PDT
> To look at this stacktrace, it seems extension code decodes images on a FILE thread with WebKit: <http://code.google.com/searchframe#OAMlx_jo-ck/src/chrome/browser/extensions/image_loading_tracker.cc&exact_package=chromium&l=103>. The browser process is not allowed to decode images. That code will likely need to be changed. Would you be willing to file a crbug.com about it and CC me?
Hironori Bono
Comment 5 2012-06-19 00:55:39 PDT
Greetings, Sure. I have filed <http://crbug.com/133471>. Regards, Hironori Bono (In reply to comment #4) > The browser process is not allowed to decode images. That code will likely need to be changed. Would you be willing to file a crbug.com about it and CC me?
Note You need to log in before you can comment on or make changes to this bug.