-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failed to get CEF3 DLL handle #57
Comments
Hmmm, it's possible that CEF requires some additional DLL files that aren't present in the container's filesystem. I'll attempt to reproduce this error using a blank project with a WebBrowserWidget UI element and investigate further. |
Thanks! Additional info: because of the bug of Docker for windows, I had to exclude from the engine compilation the debug symbols and templates (I don't know if it helps) |
I have a guess: the build tool is looking at the wrong path. I'm inside the container and there is the file Looking at the error, it looks like to tool is looking for the DLL in the relative path: And unless the Gitlab runner placed the repository inside a subfolder of However, since the error is about a handler, maybe the DLL has been correctly found (as you said) but there are other DLLs needed by the libcef.dll not found in the system (I was trying to use dependency walker inside the container, but I'm not proficient enough with Windows or Powershelll) |
I can't help with Windows (altough is the one I need the most right now). But I checked with a Linux container and, yes, CEF also in Linux has some missing library. Here's the output of
Hope it helps |
Hey, sorry for the delay in getting this resolved. Yes, I know from previous experience that CEF requires a number of X11-related libraries in order to run under Linux. The list of required packages under Ubuntu 18.04 is as follows:
The requirement for additional dependency packages under Linux is what lead me to suspect that the problem under Windows might be missing DLL dependencies, and running
I'll have to look into the best way to source each of these DLLs and determine whether it's feasible to incorporate them into the ue4-build-prerequisites image. In the meantime, if you're using images based on Windows Server 2019 then you should be able to get your CI pipeline up and running by simply copying the relevant files from the |
So we are on the right track 👍 Could you please show me how to copy the files from the base image to the CI image? Thank you very much for your reply! |
You can use a Docker multi-stage build to create a new image that adds the DLL files on top of an existing ue4-docker image. For example, the following Dockerfile will add the DLLs to the ue4-full image: # escape=`
FROM mcr.microsoft.com/windows:1809 AS dlls
FROM adamrehn/ue4-full:4.23.1-ltsc2019
COPY --from=dlls `
C:\Windows\System32\dxva2.dll `
C:\Windows\System32\mf.dll `
C:\Windows\System32\mfplat.dll `
C:\Windows\System32\mfreadwrite.dll `
C:\Windows\System32\bthprops.cpl `
C:\Windows\System32\BluetoothApis.dll `
C:\Windows\System32\ However, my testing is showing that |
Strike that last bit about the .NET issue, it appears my diagnostic tool was misbehaving. In theory those DLL files should be sufficient, although I've not yet had a chance to test it inside the ue4-full image with a project that uses a WebBrowserWidget. |
I created the docker image using multi-stage build (using you Dockerfile, but inheriting from my docker image of the engine of course) and there is something weird going on: as before, I can compile successfully the game, but when I try to run the tests or to package it, everything stops working. Nothing happens after I execute the command |
I've just built an image using the exact Dockerfile code provided above and performed some tests with a project that uses a WebBrowserWidget. Both the
Evidently the DLL files listed above are indeed all that is required when extending the Windows version of the |
I'm using version 4.23.1 with some small changes in the engine code (mostly related to computer graphics stuff). I just copy-pasted your Dockerfile (#57 (comment)), but since it works correctly in your tests, is guaranteed that the problem is somewhere in my configuration. However, if you're going to merge these changes (fixing the CEF missing dependencies on both windows and Linux images) I guess this issue can be closed since the problem is somewhere in my codebase (pretty sure the problem is in the tests right now, I have a guess). |
I still need to look into whether those DLL files can be sourced from anywhere other than the mcr.microsoft.com/windows base image, since that image has only existed since Windows Server 2019 / Windows 10 version 1809 and introducing a dependency on it would break compatibility with older versions of Windows. I'll keep this issue open until a solution has been implemented. |
I've created #165 that is explicitly dedicated to getting rid of copying DLLs from host system. |
This needs to be retested with modern ue4-build-prerequisites. If needed, we now can easily add libs from full windows image. |
Out of this list, we're still missing as of today:
|
Output of the
ue4-docker info
command:I'm using the docker images I build from a CI pipeline.
I have 2 different jobs, both of them with the same error.
The first job just executes:
The second instead:
Both of them fail because of the same issue:
Do you have any guess?
Running tests and packing locally (with the same engine) works fine, this happens only when using containers.
Thanks!
The text was updated successfully, but these errors were encountered: