Bug 89341
| Summary: | [Chromium] iccjpeg doesn't work with browser_tests | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Hajime Morrita <morrita> |
| Component: | Platform | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED WONTFIX | ||
| Severity: | Normal | CC: | abarth, hbono, schenney, tpayne |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Hajime Morrita
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 | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Hajime Morrita
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
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
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
> 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
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?