Let's run an easily reproducible test. On one connection, do
SELECT sleep(60);
(It will hang for 60 seconds.)
Then, on another connection, do
SHOW GRANTS;
SHOW PROCESSLIST;
I expect this second connection to see something like
mysql> SHOW GRANTS;
+------------------------------------------------------------------------------------------------------------+
| Grants for ...@...
+------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO '...'@'...' IDENTIFIED BY PASSWORD '*...'
+------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SHOW PROCESSLIST;
+------+------+-----------------+------+---------+------+------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+------+-----------------+------+---------+------+------------+------------------+
| 3791 | root | localhost:55369 | NULL | Query | 7 | User sleep | SELECT sleep(60) |
| 3792 | root | localhost:55370 | NULL | Query | 0 | init | SHOW PROCESSLIST |
+------+------+-----------------+------+---------+------+------------+------------------+
2 rows in set (0.00 sec)
You are saying that the GRANT shows "ALL PRIVILEGES" or at least something that includes "PROCESS"?
And you are saying you do not see the line with "User sleep | SELECT sleep(60)"?
In that case, please file a bug report with this test case (or something very similar) at bugs.mysql.com . Please include the full version number, not just "5.1".
Meanwhile, 5.1 is getting pretty old; consider upgrading to 5.5 or 5.6. (No, I doubt if the upgrade will fix the problem.)