It's not a bug. I think you may be missing something regarding windows, tabs, and buffers.
http://vim.wikia.com/wiki/Buffers has a nice overview.
It sounds like you expect bufdo to operate on all TABS in your Vim, rather than all BUFFERS, and you just happen to have a single window open in each tab with a different buffer in each case. The :tabdo command will be close to what you want but if you have multiple windows in a tab or a tab with a duplicate buffer it still may do something unexpected. If you know you have exactly one window per tab with a unique buffer in each window, there will be no problem.
You can also open up a tab containing all open buffers and run a windo on that tab:
:tabnew
:sball
:windo WhateverCommandYouWant