[Webkit-unassigned] [Bug 39340] New: WebSocket: resume should not process buffer if already processing.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue May 18 20:41:16 PDT 2010


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

           Summary: WebSocket: resume should not process buffer if already
                    processing.
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Tools / Tests
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: ukai at chromium.org
                CC: ap at webkit.org


Reported on chromium issue tracker: http://code.google.com/p/chromium/issues/detail?id=44309

I investigated this and found this happens as follows:

- didReceiveData called for handshake response message and initial websocket frame
  - processBuffer found handshake response header and WebSocket connection is established.
    - didConnect
      - dispatch open event
        ..
        - while processing handler code, it might issue some API which will send IPC to browser process
          - RenderThread::Send will enter modal loop, which will suspend active DOM objects
            - WebSocket and its WebSocketChannel is suspended
              ..
          - RenderThread::Send exit modal loop, which will resume active DOM objects
            - WebSocket and its WebSocketChannel is resumed
              processBuffer found initial websocket frame and fire message event
              - didReceiveMessage
                - dispatch message event

Thus, message event is dispatched while open event handler is running, which is wrong behavior.
This issue is in Chromium, but not in chromium test_shell nor in WebKit nightly build.

-- 
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