[Webkit-unassigned] [Bug 80386] New: Assert in checkValidity() in hashtable.h from WebGeolocationManager::didFailToDeterminePosition() when fetching http://html5demos.com/geo

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Mar 5 23:30:22 PST 2012


https://bugs.webkit.org/show_bug.cgi?id=80386

           Summary: Assert in checkValidity() in hashtable.h from
                    WebGeolocationManager::didFailToDeterminePosition()
                    when fetching http://html5demos.com/geo
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: PC
               URL: http://html5demos.com/geo
        OS/Version: Windows 7
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P1
         Component: New Bugs
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: arpitabahuguna at gmail.com
                CC: arpitabahuguna at gmail.com


Steps to reproduce:
Fetch http://html5demo.com/geo and click on "allow" for the "...would like to use your current location" pop-up.
Assert occurs.

Occurs on:
Windows port revision 103931 (debug build)
Mac port revision 108935 (debug build)

Additional information:
This assert occurs with the CLIENT_BASED_GEOLOCATION flag enabled.
A simple navigator.geolocation.getCurrentPosition() request is made from the page for which the platform returns a position error.

When handling the didFailToDeterminePosition error, the WebGeolocationManager tries to set the error on to the observers for each registered page (WebPage). For doing the same it iterates over the hashset of the registered WebPages.

While setting the error internally Geolocation::handleError() is called wherein stopUpdating() gets called (since no more listeners are available).
stopUpdating() will remove the corresponding observer but since in this particular case no more observers are present, the client's stopUpdating() function is invoked.
WebGeolocationManager un-registers the WebPage (for which it had set the error) from its hashset, even while iterating through it, causing the hashset to become empty.

Next, when we try to increment in the for loop, the assert occurs during the checkValidity() in hashset.h called from the overloaded pre increment operator's implementation.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list