Skip to content
  • beidson@apple.com's avatar
    JavaScriptCore: · 674b7969
    beidson@apple.com authored
            Reviewed by Darin
    
            Add a timedWait() method to ThreadCondition
    
            * JavaScriptCore.exp:
    
            * wtf/Threading.h:
    
            * wtf/ThreadingGtk.cpp:
            (WTF::ThreadCondition::timedWait):
    
            * wtf/ThreadingNone.cpp:
            (WTF::ThreadCondition::timedWait):
    
            * wtf/ThreadingPthreads.cpp:
            (WTF::ThreadCondition::timedWait):
    
            * wtf/ThreadingWin.cpp:
            (WTF::ThreadCondition::timedWait): Needs implementation
    
    WebKitTools:
    
            Reviewed by Darin
    
            Added a cross-platform Watchdog thread to DRT.
    
            The current watchdog in both DRTWin and DRTMac is Timer based.  Therefore, deadlocks and long running
            main thread hangs still affect DRT.
    
            By placing the watchdog on a thread and having DRT "check in" after each test, long-running hangs
            and true deadlocks can be caught.
    
            There is one hook for platform specific code.  As I did my development and testing on Mac, and Mac has
            `sample` available, the Mac implementation of this hook samples the process before it is killed.
    
            I arbitrarily chose 30 seconds as the timeout for now - this can be tweaked easily if we find a need.
    
            * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
            * DumpRenderTree/mac/Configurations/Base.xcconfig: Added LINKER_DISPLAYS_MANGLED_NAMES
    
            * DumpRenderTree/ForwardingHeaders/wtf/Locker.h: Added.
            * DumpRenderTree/ForwardingHeaders/wtf/Threading.h: Added.
    
            * DumpRenderTree/Watchdog.cpp: Added.
            (Watchdog::Watchdog):
            (Watchdog::~Watchdog):
            (Watchdog::start):
            (Watchdog::stop):
            (Watchdog::checkIn):
            (Watchdog::setWatchdogInterval):
            (Watchdog::handleHang):
            (Watchdog::watchdogThreadStart):
            (Watchdog::watchdogThread):
            * DumpRenderTree/Watchdog.h: Added.
    
            * DumpRenderTree/mac/WatchdogMac.h: Added.
            * DumpRenderTree/mac/WatchdogMac.mm: Added.
            (WatchdogMac::handleHang): Sample the process and write it out to a file
    
            * DumpRenderTree/mac/DumpRenderTree.mm:
            (dumpRenderTree): Setup and start the watchdog before running any tests
            (runTest): Checkin with the watchdog after each test
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@30849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    674b7969