My team was writing some code that involved producing many nanosecond-precise timestamps, and to our surprise, we found that on OSX, we would occasionally see duplicate timestamps in calls to time.Now().UnixNano().
These weren't consecutive calls, but rather a call to .UnixNano, a call to strconv.AppendInt, and some more buffer manipulation in a loop.
We weren't able to reproduce the issue on a Linux machine, but we did reproduce it on multiple Macs (both with and without -race).
We have some variation in our hardware:
* Go 1.6, OSX 10.11.4, mid 2015 MacBook Pro: constantly reproducible
* Go 1.5.3, OSX 10.11.2, mid 2015 MacBook Pro: constantly reproducible
* Go 1.6, OSX 10.10.5, mid 2015 MacBook Pro: constantly reproducible
* Go 1.6.1, OSX 10.11.3, mid 2014 MacBook Pro: reproducible but very infrequent
Found collision at 1460590310621970000 after 609162048 iterations last collison was 2 iterations ago.
Found collision at 1460590310621973000 after 609162051 iterations last collison was 3 iterations ago.
Found collision at 1460590310621973000 after 609162052 iterations last collison was 1 iterations ago.
Found collision at 1460590310621977000 after 609162054 iterations last collison was 2 iterations ago.
Found collision at 1460590310621979000 after 609162056 iterations last collison was 2 iterations ago.
Found collision at 1460590310621982000 after 609162059 iterations last collison was 3 iterations ago.
Found collision at 1460590310621982000 after 609162060 iterations last collison was 1 iterations ago.
Found collision at 1460590310621986000 after 609162062 iterations last collison was 2 iterations ago.
Found collision at 1460590312493887000 after 616709309 iterations last collison was 7547247 iterations ago.
Found collision at 1460590312493887000 after 616709310 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709311 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709312 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709313 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709314 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709315 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709316 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709317 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709318 iterations last collison was 1 iterations ago.
Found collision at 1460590312493887000 after 616709319 iterations last collison was 1 iterations ago.
Found collision at 1460590312493904000 after 616709321 iterations last collison was 2 iterations ago.
Found collision at 1460590312493907000 after 616709324 iterations last collison was 3 iterations ago.
Found collision at 1460590312493910000 after 616709327 iterations last collison was 3 iterations ago.
Found collision at 1460590312493912000 after 616709329 iterations last collison was 2 iterations ago.
Found collision at 1460590312493915000 after 616709332 iterations last collison was 3 iterations ago.
Found collision at 1460590312493918000 after 616709335 iterations last collison was 3 iterations ago.
Found collision at 1460590312493920000 after 616709337 iterations last collison was 2 iterations ago.
Found collision at 1460590312493922000 after 616709339 iterations last collison was 2 iterations ago.
Found collision at 1460590312493925000 after 616709342 iterations last collison was 3 iterations ago.
Found collision at 1460590312494046000 after 616709345 iterations last collison was 3 iterations ago.
Found collision at 1460590312494049000 after 616709348 iterations last collison was 3 iterations ago.
Found collision at 1460590312494052000 after 616709351 iterations last collison was 3 iterations ago.
Found collision at 1460590312494054000 after 616709353 iterations last collison was 2 iterations ago.
Found collision at 1460590312494056000 after 616709355 iterations last collison was 2 iterations ago.
Found collision at 1460590312494059000 after 616709358 iterations last collison was 3 iterations ago.
Found collision at 1460590312494062000 after 616709361 iterations last collison was 3 iterations ago.
Found collision at 1460590312494064000 after 616709363 iterations last collison was 2 iterations ago.
Found collision at 1460590312494067000 after 616709366 iterations last collison was 3 iterations ago.
Found collision at 1460590312494067000 after 616709367 iterations last collison was 1 iterations ago.
Found collision at 1460590312494161000 after 616709370 iterations last collison was 3 iterations ago.
Found collision at 1460590312494164000 after 616709373 iterations last collison was 3 iterations ago.
Found collision at 1460590312494167000 after 616709376 iterations last collison was 3 iterations ago.
Found collision at 1460590312494170000 after 616709379 iterations last collison was 3 iterations ago.
Found collision at 1460590312494172000 after 616709381 iterations last collison was 2 iterations ago.
Found collision at 1460590312494175000 after 616709384 iterations last collison was 3 iterations ago.
Found collision at 1460590312494175000 after 616709385 iterations last collison was 1 iterations ago.
Found collision at 1460590312494179000 after 616709387 iterations last collison was 2 iterations ago.
Found collision at 1460590312494181000 after 616709389 iterations last collison was 2 iterations ago.
Found collision at 1460590312494184000 after 616709392 iterations last collison was 3 iterations ago.
Found collision at 1460590312494254000 after 616709395 iterations last collison was 3 iterations ago.
Found collision at 1460590312494257000 after 616709398 iterations last collison was 3 iterations ago.
Found collision at 1460590312494257000 after 616709399 iterations last collison was 1 iterations ago.
Found collision at 1460590290165280000 after 810340214 iterations last collison was 810340214 iterations ago.
Found collision at 1460590510467578000 after 1593300312 iterations last collison was 782960098 iterations ago.
Found collision at 1460590513370454000 after 1603193249 iterations last collison was 9892937 iterations ago.
Found collision at 1460590827990295000 after 2734688158 iterations last collison was 1131494909 iterations ago.
Found collision at 1460591003566309000 after 3368962405 iterations last collison was 634274247 iterations ago. Found collision at 1460591263005088000 after 4301052067 iterations last collison was 932089662 iterations ago.
Found collision at 1460591357143260000 after 4636762475 iterations last collison was 335710408 iterations ago. I noticed that the collisions occur when the call to UnixNano seems to return microsecond-precise numbers (i.e. the final 3 digits are all zero).
I did try various Google searches with the words Darwin, OSX, nanoseconds, microseconds, golang, etc., but I wasn't able to find any information online that seemed relevant.