Bug 32704 - Crash with QWebPluginFactory plugins replacing NPAPI plugins
Summary: Crash with QWebPluginFactory plugins replacing NPAPI plugins
Status: RESOLVED DUPLICATE of bug 29450
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Qt (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Major
Assignee: Nobody
URL:
Keywords: Qt
Depends on:
Blocks:
 
Reported: 2009-12-18 02:47 PST by Pierre
Modified: 2010-03-17 04:58 PDT (History)
2 users (show)

See Also:


Attachments
Test case (1.98 KB, text/plain)
2009-12-18 02:47 PST, Pierre
no flags Details
Test case - fixed compilation... (1.95 KB, application/octet-stream)
2009-12-18 03:01 PST, Pierre
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Pierre 2009-12-18 02:47:58 PST
Created attachment 45133 [details]
Test case

Hi

I'm currently building a web browser that has to be protected from the user : the user should not be able to access the local file system for instance. In order to do this, plugins for instance must be disabled (except Flash).
When I do that using a custom QWebPluginFactory that returns a widget in every case, I get a crash on windows with the acrobat reader plugin.
You can check this behaviour with the attached source file.


How to reproduce the problem :
- launch the test case
- search "PDF example"
- click on the first link, a simple PDF file.

Without the acrobat reader plugin, there is no crash because the PDF file is considered as unsupported content.

Thanks
 Pierre
Comment 1 Pierre 2009-12-18 03:01:22 PST
Created attachment 45135 [details]
Test case - fixed compilation...

Sorry, I messed a bit with my files...
Comment 2 Pierre 2009-12-18 06:33:22 PST
Well, the problem is much more generic.
When a NPAPI plugin registers itself for a mime type, this mime type will no longer be considered a unsupported content, so WebKit will always try to open it itself. It'll call the plugin to render this content.
But when a QWebPluginFactory takes over, then trouble begins. It looks like QWebPluginFactory's plugins can't be used this way, they have to be embedded inside a web page, thus the crashes.
You can get this problem on linux too using the flash plugin : just replace http://www.google.fr with the URL of a flash video directly in the source code of the test case, and it'll crash.

Here is the backtrace :
#0  0x00007ffff778fab0 in typeinfo name for WebCore::QtPluginWidget () from /usr/lib/libQtWebKit.so.4
#1  0x00007ffff729c89e in WebCore::FrameLoaderClientQt::committedLoad (this=0x6db2e0, loader=0x7fffeb8e5080, data=0x75d088 "FWS\005\271\n", length=1067)
    at ../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:697
#2  0x00007ffff709f02d in WebCore::DocumentLoader::commitLoad (this=0x7fffeb8e5080, data=0x75d088 "FWS\005\271\n", length=1067) at loader/DocumentLoader.cpp:342
#3  0x00007ffff70dd3e9 in WebCore::ResourceLoader::didReceiveData (this=0x7fffeb90a680, data=0x75d088 "FWS\005\271\n", length=1067, lengthReceived=1067, allAtOnce=120) at loader/ResourceLoader.cpp:248
#4  0x00007ffff70ceacc in WebCore::MainResourceLoader::didReceiveData (this=0x7fffeb90a680, data=0x75d088 "FWS\005\271\n", length=1067, lengthReceived=1067, allAtOnce=<value optimized out>)
    at loader/MainResourceLoader.cpp:374
#5  0x00007ffff727ce9c in WebCore::QNetworkReplyHandler::forwardData (this=0x6d0c10) at platform/network/qt/QNetworkReplyHandler.cpp:360
#6  0x00007ffff727e598 in WebCore::QNetworkReplyHandler::qt_metacall (this=0x6d0c10, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=<value optimized out>)
    at .moc/release-shared/moc_QNetworkReplyHandler.cpp:84
#7  0x00007ffff59f3d38 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#8  0x00007ffff5ef508d in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#9  0x00007ffff5efb3bd in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#10 0x00007ffff59e3bdc in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#11 0x00007ffff59e4abc in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#12 0x00007ffff5a0db23 in ?? () from /usr/lib/libQtCore.so.4
#13 0x00007ffff30a713a in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#14 0x00007ffff30aa998 in ?? () from /lib/libglib-2.0.so.0
#15 0x00007ffff30aab4c in g_main_context_iteration () from /lib/libglib-2.0.so.0
#16 0x00007ffff5a0d68c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#17 0x00007ffff5fa553f in ?? () from /usr/lib/libQtGui.so.4
#18 0x00007ffff59e24c2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#19 0x00007ffff59e2894 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#20 0x00007ffff59e4d46 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#21 0x0000000000402444 in main (argc=1, argv=0x7fffffffe288) at main.cpp:54
Comment 3 Pierre 2009-12-18 08:06:00 PST
Update the bug flags to reflect my last comment...
Comment 4 Pierre 2009-12-21 02:40:52 PST
Improve the bug report title
Comment 5 Tor Arne Vestbø 2010-03-10 06:24:25 PST
Please follow the QtWebKit bug reporting guidelines when reporting bugs.

See http://trac.webkit.org/wiki/QtWebKitBugs

Specifically:

  - The 'QtWebKit' component should only be used for bugs/features in the
    public QtWebKit API layer, not to signify that the bug is specific to
    the Qt port of WebKit

      http://trac.webkit.org/wiki/QtWebKitBugs#Component

  - Add the keyword 'Qt' to signal that it's a Qt-related bug

      http://trac.webkit.org/wiki/QtWebKitBugs#Keywords
Comment 6 Jocelyn Turcotte 2010-03-17 04:58:47 PDT
I could reproduce the crash on Windows and the stack trace is the same as bug 29450 so I will resolve this one as duplicate.

I was not able to reproduce the crash on linux using the flash video method with your test case on Qt4.6 + WebKit trunk.
If you think that the flash crash is a different bug and you have more information about it, it would be interesting if you can add it to this bug report.

thanks

*** This bug has been marked as a duplicate of bug 29450 ***