From 6d9bda960f179aa8ea3765c10aa3140d22c74086 Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Tue, 1 Jul 2025 18:01:20 +0800 Subject: Fix media_plugin_cef failing on Linux aarch64 WARNING #Plugin# llplugin/llplugininstance.cpp(106) LLPluginInstance::load: apr_dso_load of /usr/lib64/libmedia_plugin_cef.so failed with error 20019, additional info string: /usr/lib64/libcef.so: cannot allocate memory in static TLS block https://github.com/chromiumembedded/cef/issues/3616 https://github.com/chromiumembedded/cef/issues/3803 https://magpcss.org/ceforum/viewtopic.php?t=19622 I tried adding mProcessParams.envs.add("LD_PRELOAD=/usr/lib64/libcef.so"); to indra/llplugin/llpluginprocessparent.cpp, it didn't get rid of the error, but running `LD_PRELOAD=/usr/lib64/libcef.so megapahit` OR `LD_PRELOAD=/usr/lib64/libmedia_plugin_cef.so megapahit` does. It still doesn't load web pages, however, even though there are process plugin activities. --- indra/newview/llappviewerlinux.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llappviewerlinux.cpp') diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp index c1e8f38c51..9135921acc 100644 --- a/indra/newview/llappviewerlinux.cpp +++ b/indra/newview/llappviewerlinux.cpp @@ -126,7 +126,7 @@ int main( int argc, char **argv ) // install unexpected exception handler gOldTerminateHandler = std::set_terminate(exceptionTerminateHandler); - unsetenv( "LD_PRELOAD" ); // Get rid of any preloading, we do not want this to happen during startup of plugins. + //unsetenv( "LD_PRELOAD" ); // Get rid of any preloading, we do not want this to happen during startup of plugins. bool ok = viewer_app_ptr->init(); if(!ok) -- cgit v1.2.3 From 16d3d725998f1189083c429a1cbb2cc3fb15b7da Mon Sep 17 00:00:00 2001 From: Erik Kundiman Date: Wed, 2 Jul 2025 15:12:00 +0800 Subject: Preload CEF automatically on Linux aarch64" This reverts commit 6d9bda960f179aa8ea3765c10aa3140d22c74086, and add the aarch64 condition for preloading. We can't use gDirUtilp->getLLPluginDir() yet in llappviewerlinux because it's not instantiated yet in that phase. --- indra/newview/llappviewerlinux.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'indra/newview/llappviewerlinux.cpp') diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp index 9135921acc..376eeca9fd 100644 --- a/indra/newview/llappviewerlinux.cpp +++ b/indra/newview/llappviewerlinux.cpp @@ -126,7 +126,11 @@ int main( int argc, char **argv ) // install unexpected exception handler gOldTerminateHandler = std::set_terminate(exceptionTerminateHandler); - //unsetenv( "LD_PRELOAD" ); // Get rid of any preloading, we do not want this to happen during startup of plugins. +#ifdef __aarch64__ + setenv("LD_PRELOAD", APP_PLUGIN_DIR"/libcef.so", 1); +#else + unsetenv( "LD_PRELOAD" ); // Get rid of any preloading, we do not want this to happen during startup of plugins. +#endif bool ok = viewer_app_ptr->init(); if(!ok) -- cgit v1.2.3