Closed Bug 678372 Opened 13 years ago Closed 12 years ago

reftests run without OpenGL layers even when enabled due to NSPR reaping glxtest before GfxInfo does

Categories

(Core :: Graphics, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 718629

People

(Reporter: karlt, Unassigned)

References

Details

Reftests are using PR_CreateProcess via

#0  PR_CreateProcess (path=0x7fffd340ee58 "/bin/sh", argv=0x7fffbdd65ec0, envp=0x0, attr=0x0)
    at /home/karl/moz/dev/nsprpub/pr/src/misc/prinit.c:731
#1  0x00007ffff3cb3d5b in nsProcess::RunProcess (this=0x7fffbdf3dca0, blocking=1, 
    my_argv=0x7fffbdd65ec0, observer=0x0, holdWeak=0, argsUTF8=0)
    at /home/karl/moz/dev/xpcom/threads/nsProcessCommon.cpp:535
#2  0x00007ffff3cb39ef in nsProcess::CopyArgsAndRunProcess (this=0x7fffbdf3dca0, blocking=1, 
    args=0x7fffffff31c0, count=2, observer=0x0, holdWeak=0)
    at /home/karl/moz/dev/xpcom/threads/nsProcessCommon.cpp:384
#3  0x00007ffff3cb38bd in nsProcess::Run (this=0x7fffbdf3dca0, blocking=1, args=0x7fffffff31c0, 
    count=2) at /home/karl/moz/dev/xpcom/threads/nsProcessCommon.cpp:353
#4  0x00007ffff367059b in nsOSHelperAppService::GetHandlerAndDescriptionFromMailcapFile (
    aFilename=..., aMajorType=..., aMinorType=..., aTypeOptions=..., aHandler=..., 
    aDescription=..., aMozillaFlags=...)
    at /home/karl/moz/dev/uriloader/exthandler/unix/nsOSHelperAppService.cpp:1136
#5  0x00007ffff366f572 in nsOSHelperAppService::DoLookUpHandlerAndDescription (aMajorType=..., 
    aMinorType=..., aTypeOptions=..., aHandler=..., aDescription=..., aMozillaFlags=..., 
    aUserData=0) at /home/karl/moz/dev/uriloader/exthandler/unix/nsOSHelperAppService.cpp:956
#6  0x00007ffff366f2e2 in nsOSHelperAppService::LookUpHandlerAndDescription (aMajorType=..., 
    aMinorType=..., aTypeOptions=..., aHandler=..., aDescription=..., aMozillaFlags=...)
    at /home/karl/moz/dev/uriloader/exthandler/unix/nsOSHelperAppService.cpp:901
#7  0x00007ffff36712a6 in nsOSHelperAppService::GetFromExtension (this=0x7fffc67acda0, 
    aFileExt=...) at /home/karl/moz/dev/uriloader/exthandler/unix/nsOSHelperAppService.cpp:1347
#8  0x00007ffff3672283 in nsOSHelperAppService::GetMIMEInfoFromOS (this=0x7fffc67acda0, aType=..., 
    aFileExt=..., aFound=0x7fffffff44fc)
    at /home/karl/moz/dev/uriloader/exthandler/unix/nsOSHelperAppService.cpp:1543
#9  0x00007ffff3665494 in nsExternalHelperAppService::GetTypeFromExtension (this=0x7fffc67acda0, 
    aFileExt=..., aContentType=...)
    at /home/karl/moz/dev/uriloader/exthandler/nsExternalHelperAppService.cpp:2706
#10 0x00007ffff3665ec3 in nsExternalHelperAppService::GetTypeFromFile (this=0x7fffc67acda0, aFile=
    0x7fffbdd3d240, aContentType=...)
    at /home/karl/moz/dev/uriloader/exthandler/nsExternalHelperAppService.cpp:2845
#11 0x00007ffff267d996 in nsFileChannel::MakeFileInputStream (this=0x7fffbdd54080, 
    file=0x7fffbdd3d240, stream=..., contentType=...)
    at /home/karl/moz/dev/netwerk/protocol/file/nsFileChannel.cpp:301
#12 0x00007ffff267df81 in nsFileChannel::OpenContentStream (this=0x7fffbdd54080, async=0, 
    result=0x7fffffff4c00, channel=0x7fffffff4950)
    at /home/karl/moz/dev/netwerk/protocol/file/nsFileChannel.cpp:370
#13 0x00007ffff25ae508 in nsBaseChannel::Open (this=0x7fffbdd54080, result=0x7fffffff4c00)
    at /home/karl/moz/dev/netwerk/base/src/nsBaseChannel.cpp:548
#14 0x00007ffff3cd06ea in NS_InvokeByIndex_P (that=0x7fffbdd540d0, methodIndex=27, paramCount=1, 
    params=0x7fffffff4c00)
    at /home/karl/moz/dev/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_unix.cpp:195
#15 0x00007ffff35331d2 in CallMethodHelper::Invoke (this=0x7fffffff4bc0)
    at /home/karl/moz/dev/js/src/xpconnect/src/xpcwrappednative.cpp:3119
#16 0x00007ffff3530df3 in CallMethodHelper::Call (this=0x7fffffff4bc0)
    at /home/karl/moz/dev/js/src/xpconnect/src/xpcwrappednative.cpp:2373

(gdb) call DumpJSStack()
0 ReadManifest(inherited_status = 0, aURL = [xpconnect wrapped nsIURI @ 0x7fffbdefe0f0 (native @ 0x7fffbdde7108)]) ["chrome://reftest/content/reftest.js":553]
    refURI = undefined
    prettyPath = undefined
    testURI = undefined
    incURI = undefined
    httpDepth = undefined
    runHttp = undefined
    precondition = undefined
    preconditions = undefined
    fallback_action = undefined
    precondition_str = undefined
    args = undefined
    m = undefined
    cond = undefined
    stat = undefined
    item = undefined
    slow = undefined
    needs_focus = undefined
    maxAsserts = undefined
    minAsserts = undefined
    allow_silent_fail = undefined
    expected_status = undefined
    items = undefined
    i = undefined
    str = undefined
    urlprefix = undefined
    lineNo = undefined
    sandbox = undefined
    lines = undefined
    streamBuf = undefined
    inputStream = undefined
    channel = [xpconnect wrapped nsIChannel @ 0x7fffbdefe2b0 (native @ 0x7fffbdd54080)]
    listURL = [xpconnect wrapped nsIURI @ 0x7fffbdefe0f0 (native @ 0x7fffbdde7108)]
    secMan = [xpconnect wrapped nsIScriptSecurityManager @ 0x7fffbdefe240 (native @ 0x7fffd829f040)]
    this = [object ChromeWindow @ 0x7fffc6621510 (native @ 0x7fffc67e2078)]
1 ReadTopManifest(aFileURL = "file:///home/karl/moz/dev/layout/reftests/svg/as-image/reftest.list") ["chrome://reftest/content/reftest.js":541]
    url = [xpconnect wrapped nsIURI @ 0x7fffbdefe0f0 (native @ 0x7fffbdde7108)]
    this = [object ChromeWindow @ 0x7fffc6621510 (native @ 0x7fffc67e2078)]
2 StartTests() ["chrome://reftest/content/reftest.js":361]
    end = undefined
    start = undefined
    testsPerChunk = undefined
    args = [object Object]
    this = [object ChromeWindow @ 0x7fffc6621510 (native @ 0x7fffc67e2078)]
3 InitAndStartRefTests() ["chrome://reftest/content/reftest.js":328]
    windowElem = [object XULElement @ 0x7fffbdf9fdd0 (native @ 0x7fffc67c3790)]
    mfl = undefined
    prefs = [xpconnect wrapped nsIPrefBranch2 @ 0x7fffc68c0be0 (native @ 0x7fffe4771740)]
    this = [object ChromeWindow @ 0x7fffc6621510 (native @ 0x7fffc67e2078)]
4 RecvContentReady() ["chrome://reftest/content/reftest.js":1437]
    this = [object ChromeWindow @ 0x7fffc6621510 (native @ 0x7fffc67e2078)]
5 anonymous(m = [object Object]) ["chrome://reftest/content/reftest.js":1392]
    this = [xpconnect wrapped nsIChromeFrameMessageManager @ 0x7fffbdfc0780 (native @ 0x7fffc68c0e80)]

Parsing mailcap files involves running some shell test commands, and nsIProcess is used for that.

Unfortunately PR_CreateProcess causes all other child processes to be reaped (bug 227246), and so the exit status of glxtest is not caught.
Perhaps something could be hacked up to use GfxInfo before PR_CreateProcess is used or to use NSPR to wait, but bug 678369 would be the preferred solution.
Summary: reftests run without OpenGL layers even when enabled due to NSPR reaping glxtest before GfxInfo → reftests run without OpenGL layers even when enabled due to NSPR reaping glxtest before GfxInfo does
Should I try to port glxtest to use PR_CreateProcess instead of fork?
I think it is best to avoid PR_CreateProcess.  Other libraries also use waitpid and don't expect their children to be stolen, so I don't want any further PR_CreateProcess usage.  I'll look at Benoit's idea in bug 718629, assuming that's a duplicate of this.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.