Closed Bug 855681 Opened 7 years ago Closed 6 years ago

Try to get stacks from child processes that were alive after shutdown

Categories

(Testing :: General, defect)

defect
Not set

Tracking

(Not tracked)

RESOLVED FIXED
mozilla23

People

(Reporter: emorley, Assigned: emorley)

References

Details

Attachments

(2 files)

To help debug bug 603147.
* Uses killAndGetStack() rather than killPid()
* Passes in some now-required parameters to checkForZombies()
* Tweaks parameters for killAndGetStack(), since we only have the process ID in checkForZombies(), not the process object.
Attachment #730645 - Flags: review?(ted)
Attached patch Part 2: PyflakesSplinter Review
Attachment #730646 - Flags: review?(ted)
https://tbpl.mozilla.org/?tree=Try&rev=c9d5ccae9936

However even after lots of retriggers, I still hadn't hit bug 603147, so no idea if the patches here actually work, or if they're actually a pile of nonsense. Same ol', same ol' :-)
Whiteboard: [needs review]
Comment on attachment 730645 [details] [diff] [review]
Part 1: Get stacks

Review of attachment 730645 [details] [diff] [review]:
-----------------------------------------------------------------

::: build/automation.py.in
@@ +1024,5 @@
>          return
>        elif self.IS_WIN32:
>          # We should have a "crashinject" program in our utility path
>          crashinject = os.path.normpath(os.path.join(utilityPath, "crashinject.exe"))
>          if os.path.exists(crashinject) and subprocess.Popen([crashinject, str(proc.pid)]).wait() == 0:

This needs to be changed to processPID as well.
Attachment #730645 - Flags: review?(ted) → review+
Comment on attachment 730646 [details] [diff] [review]
Part 2: Pyflakes

Review of attachment 730646 [details] [diff] [review]:
-----------------------------------------------------------------

Feel free to just fold these patches together.

::: build/automation.py.in
@@ +1024,5 @@
>          return
>        elif self.IS_WIN32:
>          # We should have a "crashinject" program in our utility path
>          crashinject = os.path.normpath(os.path.join(utilityPath, "crashinject.exe"))
> +        if os.path.exists(crashinject) and subprocess.Popen([crashinject, str(processPID)]).wait() == 0:

This change should really be in the previous patch.
Attachment #730646 - Flags: review?(ted) → review+
Thank you for the review (yeah sorry that change was meant to be in the first patch); landed folded:
https://hg.mozilla.org/integration/mozilla-inbound/rev/1c3872e0e292
https://hg.mozilla.org/mozilla-central/rev/1c3872e0e292
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Flags: in-testsuite-
Resolution: --- → FIXED
Whiteboard: [needs review]
Target Milestone: --- → mozilla23
Hmm:

00:58:54     INFO -  INFO | zombiecheck | Checking for orphan process with PID: 1732
00:58:54     INFO -  INFO | zombiecheck | Checking for orphan process with PID: 1068
00:58:54  WARNING -  TEST-UNEXPECTED-FAIL | zombiecheck | child process 1068 still alive after shutdown
00:58:54     INFO -  Error 5 opening target process
00:58:54     INFO -  Can't trigger Breakpad, just killing process
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
What OS was that?
Maybe crashinject just doesn't work on Win8?
(In reply to Ted Mielczarek [:ted.mielczarek] from comment #11)
> Maybe crashinject just doesn't work on Win8?

We're also seeing this on Win7 :-(

https://tbpl.mozilla.org/php/getParsedLog.php?id=21631665&tree=Mozilla-Inbound#error0
I have another approach to getting minidumps I'm testing for bug 874647, simply calling MiniDumpWriteDump directly using ctypes:
https://tbpl.mozilla.org/?tree=Try&rev=2dce007c810a

We might be able to try that instead.
Depends on: 874647
The patches here landed, and other bugs are covering anything left -> closing out.
Status: REOPENED → RESOLVED
Closed: 7 years ago6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.