Skip to content
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

"Invalid file descriptor to ICU data received." #2166

Closed
fidergo-stephane-gourichon opened this issue Oct 18, 2017 · 3 comments
Closed

"Invalid file descriptor to ICU data received." #2166

fidergo-stephane-gourichon opened this issue Oct 18, 2017 · 3 comments

Comments

@fidergo-stephane-gourichon
  • What version of the product are you using?

    • What version are you using? Nuget 57.0.0.0
  • What architecture x86 or x64?
    x86 (all projects)

  • On what operating system?

    • Win7
  • Are you using WinForms, WPF or OffScreen?

WinForms

  • What steps will reproduce the problem?

Create a project, in code run this:

        CefSettings setting = new CefSettings();
        Cef.Initialize(setting, null);
  • What is the expected output? What do you see instead?

Expected: initialization like in minimal sample.

Observed: program compiles, runs, then stops abruptly without a chance for the debugger to show where. Log says: "Invalid file descriptor to ICU data received."

  • Please provide any additional information below.

  • A stack trace if available, any Exception information.

No relevant stack trace.

  • Does the cef log provide any relevant information? (By default there should be a debug.log file in your bin directory)

Log says: "Invalid file descriptor to ICU data received."

  • Any other background information that's relevant? Are you doing something out of the ordinary? 3rd party controls?

Cef is instanciated in a DLL that's not the main program. Thats has implication about what's copied in output directory.

Not tested, as I found the cause.

@fidergo-stephane-gourichon
Copy link
Author

Running

Cef.Initialize(setting, true, null);

reveals the cause: files not present in directory.

The special case here is that CefSharp is called by a DLL not main program. But Visual Studio does not copy all output from taht dir into main run dir.

In this case, it was enough to add this to the main program's post-build event.

copy /Y $(SolutionDir)\my_dll_using_cefsharp\$(OutDir)\*.dll .
copy /Y $(SolutionDir)\my_dll_using_cefsharp\$(OutDir)\*.dat .
copy /Y $(SolutionDir)\my_dll_using_cefsharp\$(OutDir)\*.bin .
copy /Y $(SolutionDir)\my_dll_using_cefsharp\$(OutDir)\*.pak .
copy /Y $(SolutionDir)\my_dll_using_cefsharp\$(OutDir)\cef*.* .
xcopy /Y /I $(SolutionDir)\my_dll_using_cefsharp\$(OutDir)\locales locales

The motivation for writing this is to document it for others who stumble on the same problem.

Okay for me to close the issue at once.

Comments welcome, especially about the fix. Any alternate solution(s) ?

Thank you.

@jankurianski
Copy link
Member

Thanks for posting the solution for others to find. It makes sense that you need to copy the dependency files across to the output directory when CefSharp is used inside a DLL project. I'll close the issue but others can still comment if they have cleaner solutions.

@jankurianski
Copy link
Member

Actually, #2156 may solve this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants