Changes between Initial Version and Version 1 of Ticket #3156
- Timestamp:
- Jan 26, 2009 8:06:45 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #3156 – Description
initial v1 4 4 5 5 To reproduce: 6 1. create at least 10 machines by cloning the same VDI file and creating the same settings.7 2. start machines in ascending order (by order of creation)8 3. shutdown machine by machine in descending order. Check if shutting down one machine may cause changing state of other (running) machines.6 1. create at least 10 machines by cloning the same VDI file and creating the same settings. 7 2. start machines in ascending order (by order of creation) 8 3. shutdown machine by machine in descending order. Check if shutting down one machine may cause changing state of other (running) machines. 9 9 10 10 For instance, powering off machine number 8 may cause changing state of machine number 5 to "Aborted". The pairs of conflicting machines remain the same each start you start/stop machines. 11 11 If you discovered the conflicting pair you may reproduce the bug by starting and shutting down just these 2 machines (but keep the order). 12 12 13 Playing around with the bug showed that the problem is connected to machine UUIDs and sem pahores used for syncronization ofVirtualBox process and VBoxSVC (see details below). Therefore, just by changing UUID of one of conflicting machines the problem seems to disappear. But at the same time when UUID is changed there might appear another conflict with other machine in the set.13 Playing around with the bug showed that the problem is connected to machine UUIDs and semaphores used for synchronization of the !VirtualBox process and VBoxSVC (see details below). Therefore, just by changing UUID of one of conflicting machines the problem seems to disappear. But at the same time when UUID is changed there might appear another conflict with other machine in the set. 14 14 15 15 Looks like there is some semaphore which id is generated basing on machines UUID. The hashing function for creating semaphore id seems to be the key problem. I believe it is inside VBoxSVC module but haven't found yet. 16 16 17 ========= 18 Example: 19 I started machine N5, then started machine N8. Powered off machine N8 and machine N5 got into 'Aborted' state same moment. VirtualBox window for machine N8 disappeared but the process was still running in the background. 17 '''Example:''' 18 I started machine N5, then started machine N8. Powered off machine N8 and machine N5 got into 'Aborted' state same moment. The !VirtualBox window for machine N8 disappeared but the process was still running in the background. 20 19 21 I have attached to VirtualBox process for machine N8 with gdb and checked the stack backtrace. You may see it in the attachment. There is a reference to a sourcecode: src/VBox/Main/SessionImpl.cpp (line 860). 22 Seems like machine N8 got stuck at this point: progress->WaitForCompletion (-1); 20 I have attached to the !VirtualBox process for machine N8 with gdb and checked the stack backtrace. You may see it in the attachment. There is a reference to a sourcecode: src/VBox/Main/SessionImpl.cpp (line 860). 21 Seems like machine N8 got stuck at this point: 22 {{{ 23 progress->WaitForCompletion (-1); 24 }}} 23 25 24 26 I hope this helps!