Ourteam is developping a GUI software, and we recently acquired a dedicated server to automatically compile, test and deploy our software. However, while the compilation goes well, we're unable to run our software on the remote server.
Our server is running a Windows VM in ProxMox, configured with more than enough hardware for our needs. The windows version is the exact same on my local PC and on the remote server. Everything is up to date (especially drivers), Microsoft redistribuables are up to date and the software compiled from the remote can be run in local, but not on the remote.
At first, I suspected a mstsc (windows remote desktop access) issue with graphic drivers, but enabling it on my local PC and connecting from another PC on the virtual LAN network with my VPN IP let me run the software perfectly fine.
The software cannot run in debug, release, install, or in any way. It compiles fine, the software compiled on the remote can run in local, but not on the remote. The environment variable $LastExitCode indicates -1073741795, which seems to indicate file system error. When using Visual Studio debugging, the crash seems to happen in exe_common.inl, with the return instruction pointer on line 258.EDIT When using assembly debugging in visual studio, it crashes on instruction vxorps xmm0,xmm0,xmm0 which apparently do not exists on very old processors, maybe that's the issue ?EDITThis instruction appears to only be available on recent CPUs (post 2015 for intel, post 2022 for AMD), and such processors are not working with our proxmox install. This is probably our culprit. Either our software somehow compiles on a CPU an instruction it cannot even perform, or one of our libraries that was compiled with this instruction (I'd say Boost, because the assembly file where it crashes is this one: boost::xpressive::detail::xpression_linker::accept(struct boost::xpressive::detail::simple_repeat_matcher const &,void const *)).
I'm never sure if it means that the crash happened on the said line or on the previous line if it called a function, which is the case here, so here are the line just before the crash and the line of the crash.
My best guess would be that the compiler somehow outputs an instruction that is specific to intel's processors (on which our local machines run), or somehow uses an instruction that is not handled by the virtual processor of the Windows VM.
We also tried installing another clean Windows on another VM (in the same proxmox), and we face the exact same issue. We tried changing the virtual graphic card when driver issues when the main theory, with no success.
I managed to run some games (Factorio, ADOFI) to check if the graphics drivers were working properly. However, FreeCAD (that uses both OpenCascade and Qt like our software) crashes as well, although it might be another issue.
LinkedIn and 3rd parties use essential and non-essential cookies to provide, secure, analyze and improve our Services, and to show you relevant ads (including professional and job ads) on and off LinkedIn. Learn more in our Cookie Policy.
This article picks up directly after my most recent article, Enabling Virtualization; Can We Get QEMU to Play With KVM? LinkedIn. At the time of writing that article, I was working to get my Kali Linux with QEMU to play nicely with my used Ebay server tower. Please read my earliest article, (1) Setting up a Type 1 (Bare-Metal) Hypervisor with Proxmox (Updated with Screenshots) LinkedIn For a detailed breakdown on the machines that I use for these exercises.
Our target OS for VM today is Windows 10 Enterprise. Our lab studies in school requires Windows 10 Enterprise, specifically so we can use the Local Group Policy Editor to perform modifications that are beneficial in a lab environment. In this lab I will briefly go over the steps I took to get Windows 10 Enterprise working on my Proxmox VE 8.1.4.
This article is written under the assumption that the reader is using a Proxmox Virtual Environment. If you do not have a Proxmox VE set up, my previous articles may help you get one up and running.
Helpful Links: Windows 10 guest best practices - Proxmox VE (this page has several options listed as optimal for performance, I chose each one recommended and have had no issues whatsoever, this article is a big help directly from Proxmox.)
Firstly, download all the files. The first on this list is the ISO image for Windows 10 Enterprise. This is quite simple. Navigate to Windows 10 Enterprise Microsoft Evaluation Center and download the version that corresponds with the machine you are using. My tower has a 64 bit architecture, so I select the non-LTSC ,64-bit edition of Enterprise. This is unlike the MediaCreationTool_22H2.exe that we use to create the Windows 10 Home/Pro ISO. This download is direct, un-zipped, and ready for mounting. The file is just over 5GB, depending on your internet speed this should take 5-10 minutes to download.
Once it is downloaded, we now want to head over to Index of /groups/virt/virtio-win/direct-downloads/archive-virtio to download the virtIO drivers for Windows 10. In my research this route is not necessary to run Windows 10, however I chose this because virtIO drivers for Windows VMs are reported as having higher levels of performance/lower latency.
Assuming we have a working Proxmox VE, we want to open our Proxmox, go to the left-hand side menu and select our local storage. This is where we can upload our ISO images to use. First upload the Windows 10 Enterprise ISO. This will take longer. Once that is uploaded, locate the virtio ISO image and upload that next.
Once clicked more drop down menus appear. Select Local storage (where virtio ISO was uploaded) and choose your virtio ISO file from the list. Once this is selected, click Next to go to the System tab.
Under disks there are several options. Select SCSI for Bus/Device, leave it at 0 is fine, some sources say to change to 3 but I did not. Choose the size of the hard disk for your VM. Choose whatever is necessary for your VM, and what fits within the boundaries of your hardware. The Proxmox best practices page suggests to choose Write Back for Cache, and checking the discard checkbox for best performance. Leave the rest as is and click Next for CPU.
The next steps consist of setting a password, choosing an email account to associate with the windows account, and other Windows first time setup stuff. After those things you should now have a working, virtualized copy of Windows 10 Enterprise installed on your Proxmox.
Stay tuned for more work in Proxmox, specifically with Containers and Docker. My goal is to get so good with Docker that I can load up a fully working OS anywhere, anytime, as long as I have internet. Thanks for reading.
3a8082e126