Thanks for your kind reply, Eli. Here are some more questions: * If I found a problem in existing code that is unrelated to my new feature but is quite trivial to fix (2~3 lines), should I create a new branch and send it as an separate patch to bug tracker, or include it in my new feature? * IIUC, I send the patch to the bug tracker and people will review it, is that correct? * If the patch is a fix, should I first create a bug report and reply to that report? I'm still not quite sure how everything works, hope I'm not too garrulous. Attached is the patch for the bug fix. Changes are: 1. gdb-mi uses a buffer to store and parse output from gdb process and it is cleared after each complete conversation, however the cleanup function is not protected against call to `error' in handlers who process the output's content and do various things to it. 2. gdb-mi uses `error' for error messages from gdb, I think it should use `user-error' instead because the gdb-mi code is running well, the error is from gdb and are normal errors like "symbol not found in current context". We shouldn't drop a user into a backtrace for errors like this Yuan