Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt WebKit
  4. WebKit crashes when fast zooming in/out in Google Maps (Qt 5.2, Windows 7)
Forum Updated to NodeBB v4.3 + New Features

WebKit crashes when fast zooming in/out in Google Maps (Qt 5.2, Windows 7)

Scheduled Pinned Locked Moved Qt WebKit
12 Posts 4 Posters 5.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • O Offline
    O Offline
    outdoor_guy
    wrote on last edited by
    #1

    Hi

    Qt is 5.2.0, with MinGW 4.8, downloaded from Qt website as precompiled)
    System is Windows7, 64bit

    I'm writing an application which should include Google Maps. However, I got constantly crashes which looks like that Google Maps is not fast enough for providing Data.
    I could reproduce the problem with the debugger and got the following printout:
    @
    QPainter::begin: Paint device returned engine == 0, type: 2
    ASSERTION FAILED: m_ptr
    ..\WTF/wtf/OwnPtr.h(72) : WTF::OwnPtr<T>::ValueType* WTF::OwnPtr<T>::operator->() const [with T = WebCore::ImageBuffer; WTF::OwnPtr<T>::PtrType = WebCore::ImageBuffer*; WTF::OwnPtr<T>::ValueType = WebCore::ImageBuffer]
    @

    The stack shows the following (all in file Qt\5.2.0\minw48_32\bin\QtWebKitd.dll)
    @

    0 WTFCrash C:\Qt\5.2.0\mingw48_32\bin\Qt5WebKitd.dll 0x189a9be5
    1 WebCore::BitmapTextureImageBuffer::updateContents(WebCore::TextureMapper*, WebCore::GraphicsLayer*, WebCore::IntRect const&, WebCore::IntPoint const&, WebCore::BitmapTexture::UpdateContentsFlag) C:\Qt\5.2.0\mingw48_32\bin\Qt5WebKitd.dll 0x181857de
    2 WebCore::TextureMapperTile::updateContents(WebCore::TextureMapper*, WebCore::GraphicsLayer*, WebCore::IntRect const&, WebCore::BitmapTexture::UpdateContentsFlag) C:\Qt\5.2.0\mingw48_32\bin\Qt5WebKitd.dll 0x1817f7fa
    3 _fu2170___ZTVN10__cxxabiv120__si_class_type_infoE C:\Qt\5.2.0\mingw48_32\bin\Qt5WebKitd.dll 0x1a8d1f08
    4 ?? 0x38b1a308
    @

    The constructor which calles the WebView looks as follow:
    @
    MapView::MapView(CGPX_File *gpxFile,QWidget *parent) :
    QWebView(parent)
    {

    m_GPXFile = gpxFile;
    QDir dir;
    QString path = dir.absolutePath();
    QString htmlfile = "file:///"+path+"/map_html/map.html";
    qDebug()<<"HTML: "+htmlfile;
    

    this->load(QUrl(htmlfile));

    }
    @

    map.html is as follows:

    (I had to remove the < before script, otherwise the lines were not visible in the preview
    @
    <html>
    <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=yes" />
    script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.1&sensor=true"> /script>
    script type="text/javascript">
    var map;
    var Parkimage;
    var CurPosImage;
    var flightPath;

    var markersArray = [];
    var parkingArray = [];
    var positionArray = [];
    var CurPositionArray = [];

    var trackArray = [];

    var currentMarker;
    function initialize()
    {

    var latlng = new google.maps.LatLng(48.397,9.644);
    var myOptions =
    {
        zoom:8,
        center:latlng,
        mapTypeId:google.maps.MapTypeId.ROADMAP,
        draggable: true
     };
        map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
        Parkimage = 'parkplatz.jpg';
        CurPosImage = 'Flag.png';
        google.maps.event.addListener(map, 'click', function(event) {
          placePosition(event.latLng);
        });
        flightPath = new google.maps.Polyline({
           strokeColor: '#FF0000',
           strokeOpacity: 1.0,
           strokeWeight: 3
         });
    
         flightPath.setMap(map);
    
    }
    

    [removed]
    </head>
    <body >
    <div id="map_canvas" ></div>
    <input id="MyPosition" type="hidden">
    </body>
    </html>

    @

    Checking the Internet for that problem, I found the following:

    http://developer.nokia.com/community/wiki/QPainter::begin:Paint_device_returned_engine_==0(Known_Issue)

    However, I have no idea how to set this with QWebView.

    1 Reply Last reply
    0
    • K Offline
      K Offline
      krekeltronics
      wrote on last edited by
      #2

      Hi there, we've got the same issue with Qt 5.x up to 5.3.2 now. Were you able to resolve? Otherwise perhaps we can help one another.

      Cheers!

      1 Reply Last reply
      0
      • B Offline
        B Offline
        brcontainer
        wrote on last edited by
        #3

        Try RELEASE mode, DEBUG mode causes crashs

        QT project: https://github.com/brcontainer/qt-helper

        1 Reply Last reply
        0
        • K Offline
          K Offline
          krekeltronics
          wrote on last edited by
          #4

          I narrowed it down to the use of Ground Overlays (https://developers.google.com/maps/documentation/javascript/groundoverlays). I am rendering a custom image, writing it to local storage, and passing a file URL to the map. It works just fine, but when zooming in or out quickly, the issue occurs. Generally, the app runs out of memory, which seems to suggest a memory leak in the Ground Overlay implementation.

          As far as I have seen, removing the ground overlay during zooming (upon "zoom_changed" event) has eliminated the issue, but it's awkward for the overlay to disappear, then reappear once the map is idle again ("idle" event). So I'm looking for another workaround.

          1 Reply Last reply
          0
          • O Offline
            O Offline
            outdoor_guy
            wrote on last edited by
            #5

            [quote author="krekeltronics" date="1413569611"]Hi there, we've got the same issue with Qt 5.x up to 5.3.2 now. Were you able to resolve? Otherwise perhaps we can help one another.

            Cheers![/quote]

            Sorry, I didn't made much more with this. This was only a hobby project to write my own GPX-Viewer, so I was not able (and also willing :-) ) to do a lot of investigation there. Maybe I will port it to Linux and see what will happen there, but I work on this only from time to time, so this could mean that it will be a long time until I work on it again.
            From my work side (the one I get paid for), I do nothing with Windows

            1 Reply Last reply
            0
            • K Offline
              K Offline
              krekeltronics
              wrote on last edited by
              #6

              I am looking into porting our implementation to use the new QtWebEngine, but haven't yet figured out how to get the JavaScript to talk to the C++. It used to use addToJavaScriptWindowObject on the frame, but I think it would use QtWebChannel now.

              1 Reply Last reply
              0
              • K Offline
                K Offline
                krekeltronics
                wrote on last edited by
                #7

                I am still finding this consistently with Windows 7/8 and Mac OS X 10.9/10.10.x and Qt 5.4rc, both release and debug. I'm not sure I have any choice any more short of migrating away from Qt (that would be bad) or trying Qt WebEngine (and finding a way for the JS and C++ functions to talk to each other).

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  krekeltronics
                  wrote on last edited by
                  #8

                  I am still finding this consistently with Windows 7/8 and Mac OS X 10.9/10.10.x and Qt 5.4rc, both release and debug. I'm not sure I have any choice any more short of migrating away from Qt (that would be bad) or trying Qt WebEngine (and finding a way for the JS and C++ functions to talk to each other).

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    Hi,

                    Did you already saw the "porting guide":http://qt-project.org/wiki/QtWebEnginePortingFromQtWebKit ?

                    Hope it helps

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #10

                      Hi,

                      Did you already saw the "porting guide":http://qt-project.org/wiki/QtWebEnginePortingFromQtWebKit ?

                      Hope it helps

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        krekeltronics
                        wrote on last edited by
                        #11

                        Thanks, that guide was useful in my initial port, but without addToJavaScriptWindowObject I need to find a different way to be able to call C++ from the JS side (sockets, I am guessing).

                        1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          krekeltronics
                          wrote on last edited by
                          #12

                          Thanks, that guide was useful in my initial port, but without addToJavaScriptWindowObject I need to find a different way to be able to call C++ from the JS side (sockets, I am guessing).

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved