Ticket #12461 (closed defect: obsolete)

Opened 9 years ago

Last modified 6 years ago

Second monitor resolution disappeared after upgrading to VBox 4.3.4

Reported by: Rafcio Owned by:
Component: guest additions Version: VirtualBox 4.3.4
Keywords: Cc:
Guest type: Windows Host type: Linux


There is a definite regression in guest display driver in the 4.3.4 version. When I upgraded from 4.3.2 to 4.3.4 I was unable to set 16x9 resolution for the second monitor. All that was left were only 4x3 resolutions. Here is a detailed description. My second display native resolution is 1680x1050. I was never able to chose this resolution as there always was a bug in the (display driver?) code (see ticket 10671). BTW, I couldn't "fix" this old bug or the new bug with any command (VBoxManage setextradata..., controlvm... setvideomodehint..., etc.). Nothing worked. I was able to use 1600x900 resolution for my second display, which is the native resolution of the built in laptop display (Thinkpad T420), the first monitor. That was a workaround until I upgraded to 4.3.4 code. When that happened the resolution for the second display has changed to some low resolution (1024x768 if I remember correctly). I was unable to set any 16x9 resolutions (anything close to 1680x1050 or 1600x900), because the resolutions were gone from the available choices. All that was left were 4x3 resolutions. I found a workaround though, which is also a proof that there is a regression in 4.3.4 code. I rolled back the driver for VirtualBox Graphics Adapter in the client (Windows XP) to 4.3.2 code and that restored the 1600x900 choice for the second monitor. There is still no 1680x1050 though, but I didn't expect that.


vbox.tar.gz Download (83.7 KB) - added by Rafcio 9 years ago.
Log files
vbox.tar.2.gz Download (85.5 KB) - added by Rafcio 9 years ago.
New logs.
vbox.tar.3.gz Download (92.3 KB) - added by Rafcio 9 years ago.
Another set of logs.

Change History

Changed 9 years ago by Rafcio

Log files

comment:1 Changed 9 years ago by klaus

The old driver had the bug that it simply mixed up resolutions in multi-monitor setups, which is why you happened to have the 1600x900 resolution in the list for the 2nd monitor.

I really wonder why you don't have any luck with the native resolution, this works here rather well, with both 4.2 and 4.3.

Can you say a bit more about your intended setup? Do you run the VM in full screen mode (we made improvements there which are not enabled by default yet)? Or in windowed mode, where you cannot ever reach the full hardware resolution, simply because the window decorations need some space?

comment:2 Changed 9 years ago by Rafcio

I run VM in full screen mode. The first monitor is the laptop LCD (at 1600x900) and the second is ThinkVision monitor at 1680x1050. While the first monitor takes nicely the entire laptop screen, the second monitor resolution is the same (now, after rolling back the driver) as the first one, so there is a black border around the actual displayed area and rest of the external monitor bigger resolution. I also noticed one odd thing as I'm not sure if it is intended, or another bug. When I change the display mode to windowed and move the first monitor window to the external display (at 1680x1050) and the second monitor to the laptop screen (at 1600x900) and then switch mode to full screen I'd expect the monitors to stay on the designated display area and just "maximize". That doesn't happen. They indeed get maximized (that is switched to full screen mode), but the first monitor moves back to laptop screen and the second monitor to the external display. I don't know why can't I have the first monitor of a VM on the external display and the second monitor on the laptop built in display. Seems like another bug to me.
As far as the display resolutions for the external display go, I'd expect the commands to override anythings that is detected. Obviously, the detection doesn't work, but the commands do not work either. I tried:
VBoxManage setextradata "IBMWWSXPVM" "CustomVideoMode1" "1680x1050x32"
VBoxManage setextradata global GUI/MaxGuestResolution 1680,1050
VBoxManage setextradata global GUI/MaxGuestResolution any
VBoxManage controlvm "IBMWWSXPVM" setvideomodehint 1680 1050 32
They complete without any error, but do not seem to have any effect. Actually, the last one had some effect before I rolled back the driver, but not what I expected it to do. I believe that the closest resolution to the intended one before rolling back the driver was 1400x1050 (the vertical was OK), but the display was truncated on both sides as the aspect ratio wasn't right.
I'm writing this from another XP VM on the same host. This one has only one display. It is in windowed mode on the external display. It takes the entire screen, but the window title, menu and status bars take some of the screen space. Otherwise it is OK. When I used keyboard combination to switch to full screen mode, the display moved to the laptop screen and obviously became much smaller due to smaller resolution of the main screen. Why can't it remain where it is (on the external display) and just switch to full screen? Looks like a bug to me. So, in windowed mode the window "decorations" take some screen space, but otherwise the whole external screen. In full screen mode the first monitor always moves to the main laptop screen (set as a main screen in Linux) and the second monitor (if present in the VM) has resolution issues on the external display.
I think I made it a very detailed description.

comment:3 Changed 9 years ago by Rafcio

Oh, I just tested again the setvideomodehint command. I remember now what it does (wrong). It sets the resolution of BOTH monitors to 1680x1050, so my first screen gets too large and its native resolution (1600x900) disappears from the resolution list. Actually, all 16x9 resolutions (except 1680x1050 which is technically 16x10) disappear from the resolution list. Only 4x3 resolutions remain. That display driver needs some work I guess.

comment:4 Changed 9 years ago by sunlover

Did you try 'VBoxManage controlvm "IBMWWSXPVM" setvideomodehint 1680 1050 32 1' ?

The last parameters is the display index. By default it is 0 == primary guest screen.

comment:5 Changed 9 years ago by Rafcio

I did now. It doesn't have any effect, however I'm testing with the driver rolled back. It seems that whatever happens to the first screen is reflected on the second. When I change the resolution for the first screen with "VBoxManage controlvm "IBMWWSXPVM" setvideomodehint 1680 1050 32" both are changed. If I then try to change just the first screen to the correct resolution with "VBoxManage controlvm "IBMWWSXPVM" setvideomodehint 1600 900 32 0" both again are changed.

comment:6 Changed 9 years ago by sunlover

You mean that you tested with 4.3.2 guest additions?

Please test again with 4.3.4 guest additions and 4.3.4 VirtualBox.

Before starting the VM set the following environment variable:

export VBOX_RELEASE_LOG="+gui.e.f.l.l2.l3"

When the guest boots to desktop, switch to fullscreen with Host-F.

Attach VBox.log to this ticket. Thanks.

BTW I've tested setvideomodehint with XP guest here and it works fine. Maybe the problem is with your Linux host and QT, in this case the gui log should help to see what is wrong.

comment:7 Changed 9 years ago by Rafcio

OK. I reinstalled the 4.3.4 additions, rebooted, switched to windowed mode with Host-F, then back to full screen the same way. The 1680x1050 was not on the resolution list for the second monitor. The resolutions available were 4x3: 1280x1024, 1400x1050, then 1600x1200 and then 1920x1440. When I ran "VBoxManage controlvm "IBMWWSXPVM" setvideomodehint 1680 1050 32 1" the 1680x1050 resolution appeared in the available list. I was able to select it and it seemed to be OK, but I'm pretty much certain that after a reboot everything will be back to old configuration with 1680x1050 missing from second monitor resolution list.
Just because things work for you doesn't mean that the code has everything it needs to recognize all different setups. Both monitors under Linux have the proper resolutions, so I don't understand how it could be a problem on my side. BTW. there is another problem that I'll open a ticket soon. For another VM with 4 CPUs I get a message that the number of virtual CPUs exceed the number of physical CPUs. The laptop has 4 cores, but Vbox apparently recognizes only 2. As you can see the code needs more work to properly handle different hardware.

Changed 9 years ago by Rafcio

New logs.

comment:8 Changed 9 years ago by sunlover

Unfortunately the log file does not include required logging. It looks like the environment variable was not set correctly.

Please do another test:

  • start VM in windowed mode;
  • in a terminal execute the following command:

VBoxManage debugvm "IBMWWSXPVM" log --release "+gui.e.f.l2.l3,-gui.restrict"

  • switch to fullscreen mode with Host-F
  • verify the resolution of the secondary display in the guest
  • switch back to windowed mode with Host-F
  • attach VBox.log to the ticket.


comment:9 Changed 9 years ago by Rafcio

Well, I entered the export statement (by copying and pasting) before starting any VM session for the day. I did take effect. All the VMs were dog slow after doing this, so I'm positive that it worked. Whether it provided the necessary logging level I can't tell.
I did another test exactly as you requested. I shut down the VM in windowed mode so it started in the same state. I ran the command you provided (no error), switched to full screen mode by the keyboard shortcut and verified the resolutions available in the second display. And here is the catch. Yesterday I assumed that the 1680x1050 resolution that appeared as available for the second display after running the setvideomodehint command wouldn't stick across the reboots. I was wrong. It did, so before shutting down in windowed mode I switched the second screen resolution to 1400x1050, which was the closest available before setvidoemodehint added the correct one. So, the test might be quite useless as the 1680x1050 was already there even before starting the test. The proper resolution was available, but it was there since yesterday. To conclude the test I switched back to windowed mode and shut down the VM just in case the command would slow down the VM like the export statement did yesterday.
Problem solved? Well, I wouldn't call it a solution, rather a workaround. The question is why the proper resolution wasn't there to begin with? The host OS (RHEL 6.4) can see both displays properly, so it wasn't the source of the problem. Where did all those 4x3 resolutions come from? If they are there by default regardless of whether a particular display supports them or not, then the popular 16x9 and 16x10 resolutions should be there as well. If the 4x3 resolutions are there as a result of some kind of detection, then obviously the detection is very badly broken. I have to add that 1680x1050 was the only wide screen resolution available (except some ridiculous ones like 2560x1024), but the monitor supports other smaller resolutions as well. Obviously, the second screen resolutions need some work, whether it is a detection process or additional default resolutions.

Changed 9 years ago by Rafcio

Another set of logs.

comment:10 Changed 6 years ago by aeichner

  • Status changed from new to closed
  • Resolution set to obsolete

Please reopen if still relevant with a recent VirtualBox release.

Note: See TracTickets for help on using tickets.
ContactPrivacy policyTerms of Use