Geth v1.6.1
is now outdated. Update to Geth v1.6.5
(nicknamed Hat Trick), released to prevent a recent DOS attack on the mainnet. If the problem persists then report it via the go-ethereum GitHub repo: https://github.com/ethereum/go-ethereum
Also, accordingAccording to the Ethereum releases page, https://github.com/ethereum/go-ethereum/releases, Geth v1.6.1
was released May 4th. Your best bet at a fix would be to update your client, and stay current with the latest releases. It's entirely possible that whatever caused this error has been fixed since 1.6.1
anyways.
As far as the bug itself, according to the stacktrace everything goes wrong here: /../src/github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:314
The revision history in GitHub shows that the last revision to the file was in early May again, so the condition on line 314 that your client blows up on hasn't been changed with subsequent releases:
for j := uint32(0); j < mixBytes/hashBytes; j++ {
copy(temp[j*hashWords:], lookup(2*parent+j))
}
I haven't looked through the known issues, but based off of the minimal revision history, I'm guessing that if it is a bug it would be somewhere else in the client. In general I would update your client, and if you're still having issues try regenerating your DAG file, perhaps it's corrupted somehow. If the issue persists after that, post an issue on the repo.