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

Error: Symbol pa_log_level_meta not found #2220

Open
hanselmandrew opened this issue Dec 27, 2024 · 2 comments
Open

Error: Symbol pa_log_level_meta not found #2220

hanselmandrew opened this issue Dec 27, 2024 · 2 comments

Comments

@hanselmandrew
Copy link

In my attempt to run a Valheim server with cross play enabled on an Ubuntu 22.04 ARM64 instance via Oracle Cloud, I'm hitting this error:

Dec 27 17:40:00 instance-20241226-2040 valheim_server.x86_64[17836]: Error: Symbol pa_log_level_meta not found, cannot apply R_X86_64_JUMP_SLOT @0x7fff06004fc0 (0x1140) in ./linux64/libpulse-mainloop-glib.so.0
Dec 27 17:40:00 instance-20241226-2040 valheim_server.x86_64[17836]: Error: relocating Plt symbols in elf libpulse-mainloop-glib.so.0

Trying to locate the exact library that has the hard link to the method:

ubuntu@instance-20241226-2040:/mnt/data/valheim/valheim_server/linux64$ nm -gCD libpulse-mainloop-glib.so.0 | grep "log_level"
                 U pa_log_level_meta
ubuntu@instance-20241226-2040:/mnt/data/valheim/valheim_server/linux64$ nm -gCD libpulse-simple.so.0 | grep "log_level"

                 U pa_log_level_meta
ubuntu@instance-20241226-2040:/mnt/data/valheim/valheim_server/linux64$ nm -gCD libpulse.so.0 | grep "log_level"

                 U pa_log_level_meta
ubuntu@instance-20241226-2040:/mnt/data/valheim/valheim_server/linux64$ nm -gCD libpulsecommon-15.99.so | grep "log_level"

00000000000385c0 T pa_log_level
0000000000030840 T pa_log_level_meta
00000000000385a0 T pa_log_levelv
000000000002fd20 T pa_log_levelv_meta

I see that the there are some references to the pa_log_level_meta method, but they are preprocessed away:

#if 0
#ifdef NOALIGN
typedef void (*vFipippV_t)(int, void*, int, void*, void*, va_list);
#else
typedef void (*vFipippV_t)(int, void*, int, void*, void*, void*);
#endif
GO(pa_log_level_meta, vFipippV_t)
#endif
#if 0
EXPORT void my_pa_log_level_meta(x64emu_t* emu, int level, void* file, int line, void* func, void* format, void* b, va_list V)
{
#ifndef NOALIGN
// need to align on arm
myStackAlign((const char*)format, b, emu->scratch);
PREPARE_VALIST;
return my->pa_log_level_meta(level, file, line, func, format, emu->scratch);
#else
return my->pa_log_level_meta(level, file, line, func, format, V);
#endif
}
#endif

I spent a non-zero (but small) amount of time trying to fix this myself, but I am not familiar with this code base, so I didn't make it far.

  • This block of code is 3 years old
  • myStackAlign type signature seems to be slightly different now
  • I think pa_log_level_meta also needs a GO/GOM somewhere else
@ptitSeb
Copy link
Owner

ptitSeb commented Dec 27, 2024

Yeah, need to wrap this function. I'll check tomorow if I can wrap it.

@hanselmandrew
Copy link
Author

I may have spoke too soon, I realized that I was running on v2.6, so I updated to v3.2 to make sure that wasn't an issue. That was causing the server boot to repeatedly crash. Just to be sure, I installed the entire pulselib-dev library, and reinstalled the server via steamcmd, and I'm not seeing the reported missing symbol error anymore. So this may be a non-issue.

Still having some crashes related to some mono watchdog timer, but that seems unrelated to this library.

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