RESOLVED FIXED95243
webkit-patch rebaseline-expectations hangs
https://bugs.webkit.org/show_bug.cgi?id=95243
Summary webkit-patch rebaseline-expectations hangs
Julien Chaffraix
Reported 2012-08-28 14:10:27 PDT
Here is a trace of webkit-patch --verbose rebaseline-expectations run inside the LayoutTests/ subdirectory when it hang: webkitpy.common.system.autoinstall: [DEBUG] URL for mechanize already downloaded. Skipping... webkitpy.common.system.autoinstall: [DEBUG] "http://pypi.python.org/packages/source/m/mechanize/mechanize-0.2.5.tar.gz" webkitpy.common.system.executive: [DEBUG] "svn info" took 0.07s webkitpy.common.system.executive: [DEBUG] "svn info" took 0.06s webkitpy.common.system.executive: [DEBUG] "svn info" took 0.06s webkitpy.common.system.executive: [DEBUG] "svn info" took 0.07s webkitpy.common.system.executive: [DEBUG] "perl Tools/Scripts/webkit-build-directory --chromium-linux" took 0.08s webkitpy.common.find_files: [DEBUG] Test gathering took 0.017516 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.025551 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000436 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000176 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.010846 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.025721 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000427 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000175 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.010764 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.025546 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000514 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000176 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.010848 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.025513 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000683 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000278 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.010931 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.025781 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000428 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000177 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.010792 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.025706 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000423 seconds webkitpy.common.find_files: [DEBUG] Test gathering took 0.000177 seconds webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/efl/Skipped webkitpy.layout_tests.port.base: [DEBUG] Skipped does not exist: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/gtk/Skipped webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/mac/Skipped webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/mac-lion/Skipped webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/mac/Skipped webkitpy.common.system.executive: [DEBUG] "qmake -v" took 0.02s webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/qt-4.8/Skipped webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/qt-linux/Skipped webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/qt/Skipped webkitpy.layout_tests.port.base: [DEBUG] Using Skipped file: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/win/Skipped webkitpy.layout_tests.port.base: [DEBUG] Skipped does not exist: /usr/local/google/Projects/Gardening/WebKit/LayoutTests/platform/win-7sp0/Skipped ps reports the following: 139751 32266 3.1 0.7 169804 89668 pts/6 Sl+ 14:01 0:04 python /home/jchaffraix/Projects//Gardening/WebKit/Tools/Scripts/webkit-patch -v rebaseline-expectations I don't know what the triggers is as it happens randomly after several rebaselinings. Once it started, it is happening consistently and the only I found around that is blowing off the entire repository :(
Attachments
Patch (3.80 KB, patch)
2012-08-29 15:15 PDT, Dirk Pranke
tony: review+
Julien Chaffraix
Comment 1 2012-08-28 14:21:05 PDT
Let's forget about SVN, I got it to happen on a GIT checkout too. Same trace, different repository.
Julien Chaffraix
Comment 2 2012-08-28 16:49:46 PDT
After more debugging, here is the reason why we are hanging up: * AbstractParallelRebaselineCommand's _rebaseline is called with an empty test_list ({}) * Because we have no test, we call Executive's run_in_parallel without any command to run. * We then call join() we wait forever as there is nothing to wait for. Now, what I don't understand is how we get no test to rebaseline when there are entries that match.
Ojan Vafai
Comment 3 2012-08-28 16:53:41 PDT
rebasline-expectations just delegates to rebaseline-json. Can you print out the rebaseline-json command that's used?
Dirk Pranke
Comment 4 2012-08-28 17:44:08 PDT
perhaps we're not able to retrieve the results from the bots? I've actually seen this happen a few times in the past hour or two as well. As an aside, we also don't check the return values from the commands and don't notice if they fail :(.
Dirk Pranke
Comment 5 2012-08-28 17:47:17 PDT
Fixing this is simple but it would be nice if we could see the rebaseline-json command first to confirm that there isn't also another bug cropping up.
Julien Chaffraix
Comment 6 2012-08-29 07:52:28 PDT
(In reply to comment #5) > Fixing this is simple but it would be nice if we could see the rebaseline-json command first to confirm that there isn't also another bug cropping up. Any pointer as to how to dump this command? I tried to understand how rebaseline-expectations goes through rebaseline-json but couldn't so it's hard to know where to do the dump.
Dirk Pranke
Comment 7 2012-08-29 09:51:26 PDT
Sorry, Ojan's comment was wrong and threw me off. rebaseline-expectations delegates to rebaseline-test-internal, not rebaseline-json. It would be interesting to see if we're making it to the call in _rebaseline (on line 302), and we could wrap those lines in some _log.debug() calls. That said, it sounds like maybe your hang is different than mine (and the trace looks different than I would've expected as well), which is why it would be interesting to dig a little further ...
Julien Chaffraix
Comment 8 2012-08-29 10:53:35 PDT
> It would be interesting to see if we're making it to the call in _rebaseline (on line 302), and we could wrap those lines in some _log.debug() calls. Mmh, I posted a kinda stacktrace in comment #2 which confirms that _rebaseline (line 300) is indeed called. The issue is that |test_list| is empty when we do and that leads webkit-patch to hang on line 302: command_results = self._tool.executive.run_in_parallel(commands) > That said, it sounds like maybe your hang is different than mine (and the trace looks different than I would've expected as well), which is why it would be interesting to dig a little further ... Let me digg further as it is preventing me from doing any meaningful rebaselining.
Dirk Pranke
Comment 9 2012-08-29 11:21:00 PDT
(In reply to comment #8) > > It would be interesting to see if we're making it to the call in _rebaseline (on line 302), and we could wrap those lines in some _log.debug() calls. > > Mmh, I posted a kinda stacktrace in comment #2 which confirms that _rebaseline (line 300) is indeed called. The issue is that |test_list| is empty when we do and that leads webkit-patch to hang on line 302: > > command_results = self._tool.executive.run_in_parallel(commands) > Right, I saw that, and it's definitely a bug. I'll post a patch for it shortly. That said, the trace in the bug description looks different than what I would expect ... > > That said, it sounds like maybe your hang is different than mine (and the trace looks different than I would've expected as well), which is why it would be interesting to dig a little further ... > > Let me digg further as it is preventing me from doing any meaningful rebaselining. I assume you've worked around this for now? Definitely let me know if you're blocked on something.
Julien Chaffraix
Comment 10 2012-08-29 12:43:07 PDT
> I assume you've worked around this for now? Definitely let me know if you're blocked on something. I haven't found a real work-around apart from forcefully blowing off the source tree which is slow and annoying. Debugging further it looks like TestExpectationModel doesn't contain any REBASELINE test (self._modifier_to_tests[MODIFIERS.REBASELINE] is empty) when this happens even if Chromium's TestExpectation was changed.
Dirk Pranke
Comment 11 2012-08-29 15:15:51 PDT
Tony Chang
Comment 12 2012-08-29 15:18:19 PDT
Comment on attachment 161328 [details] Patch OK
Dirk Pranke
Comment 13 2012-08-29 15:23:04 PDT
Note You need to log in before you can comment on or make changes to this bug.