I can't comment on the error, I've never seen it.
As for the calculation of speed (in php even):
$shares = 200; //Number of shares of a given time.
$timeLen = 10; //The given time in seconds.
$hashrate = pow(2, 32) * $shares / $timeLen; //85899345920
$hashrate = $hashrate / 1000000000; //85.899345920
$hashrate = round($hashrate, 2); //85.9
returns 85.9 which is 85.9 Gh/s
1000000000 could be changed to:
1000000000000 for Th/s
1000000 for Mh/s
1000 for Kh/s
However if using VarDiff you need to modify your DB and config.py to log the Minimum difficulty of each share a 2 diff share = 2 shares, 32 diff = 32 shares.
Or you can join my pool... just saying.
NoctumDesign