src/tools/bisect-builds.py and git-bisect are your friends here.
My suggestion is to first identify the build which introduced the regression using src/tools/bisect-builds.py, this will avoid you a lot of rebuilds.
Once you narrow the range down to two daily branches (say, for instance, GOOD: 2280 BAD:2281) you will have three options
1 Most likely) the regression is in trunk between the 2280 branch-point and the 2281 branch-point. In this case you want to run a git bisect between $(git merge-base origin/master remotes/branch-heads/2280) and $(git merge-base origin/master remotes/branch-heads/2281). Remember to always gclient sync on any step of the bisect.
2) Less likely: the regression was introduced on the 2281 release branch. In which case, it's going be one of the cl in the range $(git merge-base origin/master remotes/branch-heads/2281)..origin/master remotes/branch-heads/2281.
The tricky part here is that you cannot build release branches (so you can't just git bisect there). Hopefully there won't be that many cherry-picked CLs on the release branch, so it should be easy to spot the offending CL by eye. If you really need to build, you will need to take a release tag for 2280 (e.g. 42.0.2280.0), which is buildable, and gradually cherry pick the CLs from remotes/branch-heads/2281 to find the offending one.
3) Extremely unlikely: the regression was fixed only on the 2280 branch and was-re-regressed on trunk after the 2280 branch point. Bisect here will be similar to 2281.