Bug 17418 - REGRESSION: Assertion failure dragging image (JSLock::lockCount() > 0)
Summary: REGRESSION: Assertion failure dragging image (JSLock::lockCount() > 0)
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Platform (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows XP
: P1 Normal
Assignee: Alexey Proskuryakov
URL:
Keywords: Regression
Depends on:
Blocks:
 
Reported: 2008-02-17 17:29 PST by Matt Lilek
Modified: 2008-02-18 10:15 PST (History)
0 users

See Also:


Attachments
proposed fix (untested) (1.24 KB, patch)
2008-02-18 01:51 PST, Alexey Proskuryakov
darin: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Lilek 2008-02-17 17:29:33 PST
Dragging an image in ToT on Windows fails the following ASSERT in UString::Rep::createCopying:

JSLock::lockCount() > 0
<http://trac.webkit.org/projects/webkit/browser/trunk/JavaScriptCore/kjs/ustring.cpp#L175>

>	WebKit.dll!KJS::UString::Rep::createCopying(const KJS::UChar * d=0x03f2a4e0, int l=77)  Line 175 + 0x25 bytes	C++
 	WebKit.dll!KJS::UString::UString(const KJS::UChar * c=0x03f2a4e0, int length=77)  Line 442 + 0x11 bytes	C++
 	WebKit.dll!WebCore::String::operator KJS::UString()  Line 644 + 0x28 bytes	C++
 	WebKit.dll!WebCore::KURL::operator KJS::UString()  Line 140 + 0x23 bytes	C++
 	WebKit.dll!WebCore::ClipboardWin::declareAndWriteDragImage(WebCore::Element * element=0x029b03f8, const WebCore::KURL & url={...}, const WebCore::String & title={...}, WebCore::Frame * frame=0x01e1b4f0)  Line 677 + 0x34 bytes	C++
 	WebKit.dll!WebCore::prepareClipboardForImageDrag(WebCore::Frame * src=0x01e1b4f0, WebCore::Clipboard * clipboard=0x0269c410, WebCore::Element * node=0x029b03f8, const WebCore::KURL & linkURL={...}, const WebCore::KURL & imageURL={...}, const WebCore::String & label={...})  Line 558 + 0x42 bytes	C++
 	WebKit.dll!WebCore::DragController::startDrag(WebCore::Frame * src=0x01e1b4f0, WebCore::Clipboard * clipboard=0x0269c410, WebCore::DragOperation srcOp=DragOperationNone, const WebCore::PlatformMouseEvent & dragEvent={...}, const WebCore::IntPoint & dragOrigin={...}, bool isDHTMLDrag=false)  Line 635 + 0x2f bytes	C++
 	WebKit.dll!WebCore::EventHandler::handleDrag(const WebCore::MouseEventWithHitTestResults & event={...})  Line 1755 + 0x44 bytes	C++
 	WebKit.dll!WebCore::EventHandler::handleMouseDraggedEvent(const WebCore::MouseEventWithHitTestResults & event={...})  Line 353 + 0xc bytes	C++
 	WebKit.dll!WebCore::EventHandler::handleMouseMoveEvent(const WebCore::PlatformMouseEvent & mouseEvent={...}, WebCore::HitTestResult * hoveredNode=0x0012f7a4)  Line 1034 + 0xc bytes	C++
 	WebKit.dll!WebCore::EventHandler::mouseMoved(const WebCore::PlatformMouseEvent & event={...})  Line 938 + 0x10 bytes	C++
 	WebKit.dll!WebView::handleMouseEvent(unsigned int message=512, unsigned int wParam=1, long lParam=11534604)  Line 1216 + 0x1d bytes	C++
 	WebKit.dll!WebViewWndProc(HWND__ * hWnd=0x00050112, unsigned int message=512, unsigned int wParam=1, long lParam=11534604)  Line 1634 + 0x14 bytes	C++
 	user32.dll!7e418724() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
Comment 1 Alexey Proskuryakov 2008-02-18 01:51:06 PST
Created attachment 19185 [details]
proposed fix (untested)

As usual, my Windows build is far from completion, but this should fix the issue.

I'm curious why KURL has such a preference for UString.
Comment 2 Darin Adler 2008-02-18 09:30:25 PST
Comment on attachment 19185 [details]
proposed fix (untested)

r=me

The implicit conversion from KURL to UString is a bad idea. I suggest we either remove it or if we decide it's too valuable to remove, add an implicit conversion to String.
Comment 3 Alexey Proskuryakov 2008-02-18 10:15:49 PST
Committed revision 30369.