roadlabs / chromiumembedded

Automatically exported from code.google.com/p/chromiumembedded
0 stars 1 forks source link

Flash IO Hang CEF #1332

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Use a custom SchemeHandler and a custom ResourceHandler to handle HTTP/HTTPS 
I/O
2. Open a flash webpage that contains files that flash download (like audio, 
video or requests)
3. Wait few seconds

What is the expected output? What do you see instead?
It should works

What version of the product are you using? On what operating system?
Renderer process hangs

Please provide any additional information below.
    libcef.dll!base::debug::BreakDebugger()  Riga 107   C++
    libcef.dll!logging::LogMessage::~LogMessage()  Riga 659 C++
>   libcef.dll!ppapi::host::PpapiHost::OnHostMsgResourceCreated(const 
ppapi::proxy::ResourceMessageCallParams & params, int instance, const 
IPC::Message & nested_msg)  Riga 240    C++
    libcef.dll!DispatchToMethod<ppapi::host::PpapiHost,void (__thiscall ppapi::host::PpapiHost::*)(ppapi::proxy::ResourceMessageCallParams const &,int,IPC::Message const &),ppapi::proxy::ResourceMessageCallParams,int,IPC::Message>(ppapi::host::PpapiHost * obj, void (const ppapi::proxy::ResourceMessageCallParams &, int, const IPC::Message &)* method, const Tuple3<ppapi::proxy::ResourceMessageCallParams,int,IPC::Message> & arg)  Riga 564 + 0x3a byte C++
    libcef.dll!PpapiHostMsg_ResourceCreated::Dispatch<ppapi::host::PpapiHost,ppapi::host::PpapiHost,void (__thiscall ppapi::host::PpapiHost::*)(ppapi::proxy::ResourceMessageCallParams const &,int,IPC::Message const &)>(const IPC::Message * msg, ppapi::host::PpapiHost * obj, ppapi::host::PpapiHost * sender, void (const ppapi::proxy::ResourceMessageCallParams &, int, const IPC::Message &)* func)  Riga 1151 + 0x54 byte C++
    libcef.dll!ppapi::host::PpapiHost::OnMessageReceived(const IPC::Message & msg)  Riga 63 + 0x5f byte C++
    libcef.dll!content::BrowserPpapiHostImpl::HostMessageFilter::OnMessageReceived(const IPC::Message & msg)  Riga 170 + 0x1c byte  C++
    libcef.dll!content::ChildProcessHostImpl::OnMessageReceived(const IPC::Message & msg)  Riga 243 + 0x35 byte C++
    libcef.dll!IPC::internal::ChannelReader::DispatchInputData(const char * input_data, int input_data_len)  Riga 97 + 0x18 byte    C++
    libcef.dll!IPC::internal::ChannelReader::AsyncReadComplete(int bytes_read)  Riga 39 C++
    libcef.dll!IPC::Channel::ChannelImpl::OnIOCompleted(base::MessagePumpForIO::IOContext * context, unsigned long bytes_transfered, unsigned long error)  Riga 446 + 0x12 byte C++
    libcef.dll!base::MessagePumpForIO::WaitForIOCompletion(unsigned long timeout, base::MessagePumpForIO::IOHandler * filter)  Riga 562 + 0x1b byte C++
    libcef.dll!base::MessagePumpForIO::WaitForWork()  Riga 537  C++
    libcef.dll!base::MessagePumpForIO::DoRunLoop()  Riga 522    C++
    libcef.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate, base::MessagePumpDispatcher * dispatcher)  Riga 65 + 0xf byte    C++
    libcef.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate)  Riga 47 + 0x1c byte   C++
    libcef.dll!base::MessageLoop::RunHandler()  Riga 399 + 0x2a byte    C++
    libcef.dll!base::RunLoop::Run()  Riga 50    C++
    libcef.dll!base::MessageLoop::Run()  Riga 293   C++
    libcef.dll!base::Thread::Run(base::MessageLoop * message_loop)  Riga 173    C++
    libcef.dll!content::BrowserThreadImpl::IOThreadRun(base::MessageLoop * message_loop)  Riga 163  C++
    libcef.dll!content::BrowserThreadImpl::Run(base::MessageLoop * message_loop)  Riga 188 + 0xc byte   C++
    libcef.dll!base::Thread::ThreadMain()  Riga 225 + 0x16 byte C++
    libcef.dll!base::`anonymous namespace'::ThreadFunc(void * params)  Riga 78 + 0xe byte   C++
    kernel32.dll!75a3338a()     
    [I frame indicati di seguito possono essere errati e/o mancanti, non sono stati caricati simboli per kernel32.dll]  
    ntdll.dll!775e9f72()    
    ntdll.dll!775e9f45()    

I builded CEF from scratch (CEF 1916, Chromium 1750) with two patches applied 
(issues #1070 and #1259) to add charset support to custom resource handler and 
to fix crashes doing network I/O.

The application is .NET based and uses Xilium.CefGlue but, as far i understand 
the problem isn't related to that.

Googling around i found that this is a known problem on Chromium

I cannot upload a test unit because my C++ abilities aren't good enough

As far i understand Flash process (plugin/pepper) does blocking io and this 
crash renderer process because it tries to send async messages without success.

I append these switches to test the pepper flash plugin

--ppapi
--ppapi-out-of-process
--ppapi-in-process-broker
--register-pepper-plugins="C:\\Program Files 
(x86)\\Google\\Chrome\\Application\\35.0.1916.153\\PepperFlash\\pepflashplayer.d
ll;application/x-shockwave-flash"

It correctly load because i see that the new process starts with different 
command line args.

There is a known way to fix this problem?

Thank you!

Original issue reported on code.google.com by d.alb...@gmail.com on 4 Jul 2014 at 10:40

GoogleCodeExporter commented 9 years ago
I forgot to paste the log

[0704/142600:FATAL:ppapi_host.cc(239)] Check failed: false. 
Backtrace:
    base::debug::StackTrace::StackTrace [0x1033B4F1+33] (c:\users\daniele\sviluppo\chrominium\src\base\debug\stack_trace_win.cc:207)
    logging::LogMessage::~LogMessage [0x10283B5F+63] (c:\users\daniele\sviluppo\chrominium\src\base\logging.cc:562)
    ppapi::host::PpapiHost::OnHostMsgResourceCreated [0x14B84721+449] (c:\users\daniele\sviluppo\chrominium\src\ppapi\host\ppapi_host.cc:240)
    DispatchToMethod<ppapi::host::PpapiHost,void (__thiscall ppapi::host::PpapiHost::*)(ppapi::proxy::ResourceMessageCallParams const &,int,IPC::Message const &),ppapi::proxy::ResourceMessageCallParams,int,IPC::Message> [0x14B7EDAE+62] (c:\users\daniele\sviluppo\chrominium\src\base\tuple.h:564)
    PpapiHostMsg_ResourceCreated::Dispatch<ppapi::host::PpapiHost,ppapi::host::PpapiHost,void (__thiscall ppapi::host::PpapiHost::*)(ppapi::proxy::ResourceMessageCallParams const &,int,IPC::Message const &)> [0x14B7E864+84] (c:\users\daniele\sviluppo\chrominium\src\ppapi\proxy\ppapi_messages.h:1151)
    ppapi::host::PpapiHost::OnMessageReceived [0x14B84E99+553] (c:\users\daniele\sviluppo\chrominium\src\ppapi\host\ppapi_host.cc:63)
    content::BrowserPpapiHostImpl::HostMessageFilter::OnMessageReceived [0x10A7767E+334] (c:\users\daniele\sviluppo\chrominium\src\content\browser\renderer_host\pepper\browser_ppapi_host_impl.cc:170)
    content::ChildProcessHostImpl::OnMessageReceived [0x10E3ED8A+202] (c:\users\daniele\sviluppo\chrominium\src\content\common\child_process_host_impl.cc:243)
    IPC::internal::ChannelReader::DispatchInputData [0x10F273A1+769] (c:\users\daniele\sviluppo\chrominium\src\ipc\ipc_channel_reader.cc:97)
    IPC::internal::ChannelReader::AsyncReadComplete [0x10F27081+33] (c:\users\daniele\sviluppo\chrominium\src\ipc\ipc_channel_reader.cc:39)
    IPC::Channel::ChannelImpl::OnIOCompleted [0x10F132C6+486] (c:\users\daniele\sviluppo\chrominium\src\ipc\ipc_channel_win.cc:446)
    base::MessagePumpForIO::WaitForIOCompletion [0x10379143+355] (c:\users\daniele\sviluppo\chrominium\src\base\message_loop\message_pump_win.cc:562)
    base::MessagePumpForIO::DoRunLoop [0x103772BF+95] (c:\users\daniele\sviluppo\chrominium\src\base\message_loop\message_pump_win.cc:502)
    base::MessagePumpWin::RunWithDispatcher [0x10378B02+130] (c:\users\daniele\sviluppo\chrominium\src\base\message_loop\message_pump_win.cc:65)
    base::MessagePumpWin::Run [0x10378A6C+28] (c:\users\daniele\sviluppo\chrominium\src\base\message_loop\message_pump_win.h:47)
    base::MessageLoop::RunHandler [0x102AE7F7+247] (c:\users\daniele\sviluppo\chrominium\src\base\message_loop\message_loop.cc:399)
    base::RunLoop::Run [0x10320399+41] (c:\users\daniele\sviluppo\chrominium\src\base\run_loop.cc:50)
    base::MessageLoop::Run [0x102AE6AB+43] (c:\users\daniele\sviluppo\chrominium\src\base\message_loop\message_loop.cc:293)
    base::Thread::Run [0x10320F46+22] (c:\users\daniele\sviluppo\chrominium\src\base\threading\thread.cc:173)
    content::BrowserThreadImpl::IOThreadRun [0x103E7024+52] (c:\users\daniele\sviluppo\chrominium\src\content\browser\browser_thread_impl.cc:163)
    content::BrowserThreadImpl::Run [0x103E7EAB+235] (c:\users\daniele\sviluppo\chrominium\src\content\browser\browser_thread_impl.cc:188)
    base::Thread::ThreadMain [0x1032184A+618] (c:\users\daniele\sviluppo\chrominium\src\base\threading\thread.cc:225)
    base::`anonymous namespace'::ThreadFunc [0x102A5BAB+219] (c:\users\daniele\sviluppo\chrominium\src\base\threading\platform_thread_win.cc:78)
    BaseThreadInitThunk [0x75A3338A+18]
    RtlInitializeExceptionChain [0x775E9F72+99]
    RtlInitializeExceptionChain [0x775E9F45+54]

Original comment by d.alb...@gmail.com on 4 Jul 2014 at 12:29

GoogleCodeExporter commented 9 years ago
The Pepper Flash plugin is unlikely to load in CEF without changes (see 
https://code.google.com/p/chromiumembedded/issues/detail?id=1331#c1 for related 
comments).

Did you try with the NPAPI Flash plugin?

Original comment by magreenb...@gmail.com on 16 Jul 2014 at 10:03

GoogleCodeExporter commented 9 years ago
Yes but there is the same problem. 

Original comment by d.alb...@gmail.com on 17 Jul 2014 at 5:12

GoogleCodeExporter commented 9 years ago
CEF is transitioning from Google Code to Bitbucket project hosting. If you 
would like to continue receiving notifications on this issue please add 
yourself as a Watcher at the new location: 
https://bitbucket.org/chromiumembedded/cef/issue/1332

Original comment by magreenb...@gmail.com on 14 Mar 2015 at 3:32