Any plans for the native 64-bit Linux version?

Talk about anything here.
vinylrake
Posts: 3591
Joined: Wed Apr 07, 2004 12:52 pm
Location: here
Contact:

Re: Any plans for the native 64-bit Linux version?

Post by vinylrake »

Myth is not open source.
flabbergastedpickle
Posts: 27
Joined: Mon Jan 16, 2012 3:54 pm

Re: Any plans for the native 64-bit Linux version?

Post by flabbergastedpickle »

In that case is there a way you could provide fully dynamically linked executable as the only thing I could not test with LD_PRELOAD hack is libSDL, yet forcefully preloading any of the other linked libraries did not make any difference (e.g. preloading ones that shipped with Aquaria game and that are also being used by Myth). That fact combined with the developments with Aquaria seems to me all point to this being the source of the problem.
Myrd
Site Admin
Posts: 4031
Joined: Fri Mar 19, 2004 10:17 pm

Re: Any plans for the native 64-bit Linux version?

Post by Myrd »

We statically link SDL to reduce the number of dependencies on system libraries - since different distros ship with different sets of packages and such by default. We are already using SDL 1.2.14.

I really don't see how the linking of SDL could be affecting this - it has nothing to do with how we use OpenGL. It must be something else - perhaps how we link to libGLU?

I think the best course of action is to narrow down the difference between the two Aquaria builds? i.e. can the Aquaria developer really produce both a bad build and a good build by changing one specific thing?
flabbergastedpickle
Posts: 27
Joined: Mon Jan 16, 2012 3:54 pm

Re: Any plans for the native 64-bit Linux version?

Post by flabbergastedpickle »

Many thanks for your reply but I cannot really expect the Aquaria contributor to use their time to troubleshoot a Myth 2 problem beyond what I've already mentioned, particularly considering they were willing to fix in their own app. Namely, I tried LD_PRELOADing every single library provided with Aquaria that overlaps with Myth2 and none of them had any effect on the issue (including loading them all). The only difference the Aquaria contributor (as it turns out he's not even the core dev but the executable's source is readily available on icculus.org) did was recompile Aquaria with a newer version of SDL (the same version you mentioned) and applied a few patches, none of which had anything to do with GL/GLU stuff but rather gameplay issues. It's all described in great detail in our correspondence I linked to earlier in this thread. Even though SDL might be the same version it may have been compiled with different flags or there might be some kind of a quirk of having it compiled on a specific architecture and SDL could be very well responsible for textures since the same textures can be used in non-accelerated mode which I presume falls back on SDL (of course without being able to see the code this is a mere speculation that is probably not worth the time it takes to read it :-). SDL is also the only common thing between the two since Aquaria does not link directly to libGL or libGLU but rather that is done through SDL dependency and as such that part is not comparable. So, until we can prove it otherwise everything points to the SDL being the culprit.

Also, I still don't know what arch you used to compile Myth for Linux which would also help possibly identify similarities between the two issues. Also, if you are not willing to consider using dynamic linking against SDL is there a way you could simply recompile executable with a Ubuntu Oneiric version of libSDL.a to see if that fixes it? That would take a lot less time than for me to fish in the dark with incomplete information or the time it took to get this far...

Many thanks for your consideration!
Myrd
Site Admin
Posts: 4031
Joined: Fri Mar 19, 2004 10:17 pm

Re: Any plans for the native 64-bit Linux version?

Post by Myrd »

We compile Myth II Linux builds on Ubuntu 10.10, which has this for 'uname -a':

Code: Select all

Linux ubuntubox 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux
We link against the attached libSDLa, which was produced via the following steps on the above system:

Code: Select all

unzip SDL-1.2.14.zip
cd SDL-1.2.14
./configure --disable-audio
make
cp build/.libs/libSDL.a ..
If you give me a libSDL.a to try, I will make you a build that links to that version - but I would be very much surprised if it has any effect on your problem. I don't think this would be a good use of my time, but I'll do it if it makes you happy.

Some more details on our build:

We build with the following GCC version:

Code: Select all

gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
We use optimization settings -03 -fno-strict-aliasing -rdynamic. We link to libSDL.a (attached) and -lGLU.
Attachments
libSDL.a.zip
(1.1 MiB) Downloaded 325 times
Myrd
Site Admin
Posts: 4031
Joined: Fri Mar 19, 2004 10:17 pm

Re: Any plans for the native 64-bit Linux version?

Post by Myrd »

And just for completeness, here's the source package of SDL that we use. It's basically the same source zip you get if you go to download it from libsdl.org.
Attachments
SDL-1.2.14.zip
(4.71 MiB) Downloaded 324 times
flabbergastedpickle
Posts: 27
Joined: Mon Jan 16, 2012 3:54 pm

Re: Any plans for the native 64-bit Linux version?

Post by flabbergastedpickle »

Many thanks for the info! Really appreciate all your help. Here's what I could dig up on my end. First, attached is the Oneiric 32-bit version of libSDL.a (in case you wish to give it a stab).

Oneiric SDL library has been compiled with following flags (according to pkgconfig)

# sdl pkg-config source file

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: sdl
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 1.2.14
Requires:
Conflicts:
Libs: -L${libdir} -lSDL
Libs.private: -lSDL -lpthread -lm -ldl -lasound -lm -ldl -lpthread -lesd -lpulse-simple -lpulse -laa -L/usr/lib -lcaca -lpthread
Cflags: -I${includedir}/SDL -D_GNU_SOURCE=1 -D_REENTRANT

Now, onto Aquaria. Using all identical libraries, including libSDL (everything is dynamically linked) here's the only difference between the working and non-working builds:

============================================

Aquaria (NON-WORKING):
file ./aquaria
aquaria: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.18, not stripped

ldd ./aquaria
linux-gate.so.1 => (0xf77ba000)
libSDL-1.2.so.0 => /opt/Aquaria/./libSDL-1.2.so.0 (0xf7721000)
libopenal.so.1 => /opt/Aquaria/./libopenal.so.1 (0xf76d3000)
libstdc++.so.6 => /opt/Aquaria/./libstdc++.so.6 (0xf75e6000)
libm.so.6 => /lib32/libm.so.6 (0xf7599000)
libgcc_s.so.1 => /opt/Aquaria/./libgcc_s.so.1 (0xf758e000)
libc.so.6 => /lib32/libc.so.6 (0xf7414000)
libdl.so.2 => /lib32/libdl.so.2 (0xf740f000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf73f4000)
librt.so.1 => /lib32/librt.so.1 (0xf73ea000)
/lib/ld-linux.so.2 (0xf77bb000)

(notice it uses its own libSDL and a couple other libs)

============================================

Aquaria (WORKING):
file ./aquaria32
aquaria32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped

ldd ./aquaria32
linux-gate.so.1 => (0xf77d5000)
libSDL-1.2.so.0 => /usr/lib32/libSDL-1.2.so.0 (0xf7716000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf76fb000)
libopenal.so.1 => /usr/lib32/libopenal.so.1 (0xf7664000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf7579000)
libm.so.6 => /lib32/libm.so.6 (0xf754f000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7531000)
libc.so.6 => /lib32/libc.so.6 (0xf73b7000)
libdl.so.2 => /lib32/libdl.so.2 (0xf73b2000)
libpulse-simple.so.0 => /usr/lib32/libpulse-simple.so.0 (0xf73ac000)
libpulse.so.0 => /usr/lib32/libpulse.so.0 (0xf735e000)
/lib/ld-linux.so.2 (0xf77d6000)
librt.so.1 => /lib32/librt.so.1 (0xf7355000)
libpulsecommon-1.0.so => /usr/lib32/libpulsecommon-1.0.so (0xf72f0000)
libjson.so.0 => /usr/lib32/libjson.so.0 (0xf72e8000)
libdbus-1.so.3 => /lib32/libdbus-1.so.3 (0xf729e000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf727f000)
libwrap.so.0 => /lib32/libwrap.so.0 (0xf7275000)
libsndfile.so.1 => /usr/lib32/libsndfile.so.1 (0xf7204000)
libasyncns.so.0 => /usr/lib32/libasyncns.so.0 (0xf71fd000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf71f8000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf71f1000)
libnsl.so.1 => /lib32/libnsl.so.1 (0xf71d8000)
libFLAC.so.8 => /usr/lib32/libFLAC.so.8 (0xf718a000)
libvorbisenc.so.2 => /usr/lib32/libvorbisenc.so.2 (0xf7012000)
libvorbis.so.0 => /usr/lib32/libvorbis.so.0 (0xf6fe6000)
libogg.so.0 => /usr/lib32/libogg.so.0 (0xf6fde000)
libresolv.so.2 => /lib32/libresolv.so.2 (0xf6fc7000)

============================================

Please note how the second (working one) uses all system libs. Both executables are in the same folder sharing all other game files (apart from a few locally linked libs by the non-working version vs. system libs on the working one as stated above).

The curious thing is when I LD_PRELOAD=/opt/Aquaria/libSDL-1.2.so.0 and try to run aquaria32 (working version) I still don't get the artifacts... LD_PRELOADING other libs does not work (since they are core libs).

The only other difference I could note from my correspondence with Aquaria dev was the following post:

http://www.bit-blot.com/forum/index.php ... 3#msg32743

Once again, many thanks for all your help!

EDIT: I am thinking you will probably have a failed binary if you use Oneiric libSDL.a since it has been compiled with a different version of a compiler whereas your system might be using an older version, so that might not work unless you are able to compile it on a genuine Oneiric system... An alternative would be to use flags found in pkgconfig and see if that makes any difference...
Attachments
libSDL.a.zip
Oneiric 32-bit libSDL.a
(231.44 KiB) Downloaded 334 times
Myrd
Site Admin
Posts: 4031
Joined: Fri Mar 19, 2004 10:17 pm

Re: Any plans for the native 64-bit Linux version?

Post by Myrd »

Unfortunately, linking to that one resulted in missing symbol errors from the linker:

Code: Select all


./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_CloseAudio':
(.text+0x144): undefined reference to `snd_pcm_drain'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_CloseAudio':
(.text+0x154): undefined reference to `snd_pcm_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_PlayAudio':
(.text+0x1c8): undefined reference to `snd_pcm_writei'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_PlayAudio':
(.text+0x205): undefined reference to `snd_pcm_recover'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_PlayAudio':
(.text+0x211): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `Audio_Available':
(.text+0x445): undefined reference to `snd_pcm_open'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `Audio_Available':
(.text+0x457): undefined reference to `snd_pcm_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x489): undefined reference to `snd_pcm_hw_params'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x4a1): undefined reference to `snd_pcm_hw_params_get_buffer_size'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x501): undefined reference to `snd_pcm_hw_params_get_period_size'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_finalize_hardware.isra.5':
(.text+0x519): undefined reference to `snd_pcm_hw_params_get_periods'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x57c): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x589): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x5b3): undefined reference to `snd_pcm_hw_params_copy'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x618): undefined reference to `snd_pcm_hw_params_set_period_size_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_period_size':
(.text+0x64e): undefined reference to `snd_pcm_hw_params_set_periods_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x6ac): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x6b9): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x6e3): undefined reference to `snd_pcm_hw_params_copy'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_set_buffer_size.constprop.6':
(.text+0x742): undefined reference to `snd_pcm_hw_params_set_buffer_size_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x7e0): undefined reference to `snd_pcm_open'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x7ed): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x804): undefined reference to `snd_pcm_hw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x832): undefined reference to `snd_pcm_hw_params_any'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x859): undefined reference to `snd_pcm_hw_params_set_access'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x8ef): undefined reference to `snd_pcm_hw_params_set_channels'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x929): undefined reference to `snd_pcm_hw_params_set_rate_near'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x958): undefined reference to `snd_pcm_sw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x965): undefined reference to `snd_pcm_sw_params_sizeof'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x994): undefined reference to `snd_pcm_sw_params_current'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x9b8): undefined reference to `snd_pcm_sw_params_set_start_threshold'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0x9d4): undefined reference to `snd_pcm_sw_params'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xa35): undefined reference to `snd_pcm_nonblock'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xa86): undefined reference to `snd_pcm_hw_params_set_format'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xace): undefined reference to `snd_pcm_hw_params_get_channels'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xb1b): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xb6e): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xb90): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xbba): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o): In function `ALSA_OpenAudio':
(.text+0xc02): undefined reference to `snd_strerror'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_alsa_audio.o):(.text+0xc2c): more undefined references to `snd_strerror' follow
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `ESD_OpenAudio':
(.text+0x3c4): undefined reference to `esd_play_stream'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `Audio_Available':
(.text+0x4ab): undefined reference to `esd_open_sound'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `Audio_Available':
(.text+0x4b9): undefined reference to `esd_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_esdaudio.o): In function `ESD_CloseAudio':
(.text+0x504): undefined reference to `esd_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x146): undefined reference to `pa_stream_drain'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x154): undefined reference to `pa_operation_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x16a): undefined reference to `pa_context_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x180): undefined reference to `pa_stream_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x1a5): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x1b1): undefined reference to `pa_operation_cancel'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x205): undefined reference to `pa_stream_disconnect'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x216): undefined reference to `pa_stream_unref'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x232): undefined reference to `pa_context_disconnect'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x243): undefined reference to `pa_context_unref'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_CloseAudio':
(.text+0x25e): undefined reference to `pa_mainloop_free'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_PlayAudio':
(.text+0x2c3): undefined reference to `pa_stream_write'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x2f7): undefined reference to `pa_context_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x30d): undefined reference to `pa_stream_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x332): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitAudio':
(.text+0x347): undefined reference to `pa_stream_writable_size'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x482): undefined reference to `pa_channel_map_init_auto'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x48d): undefined reference to `pa_mainloop_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x4a7): undefined reference to `pa_mainloop_get_api'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x555): undefined reference to `pa_context_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x589): undefined reference to `pa_context_connect'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x5b4): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x5cd): undefined reference to `pa_context_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x606): undefined reference to `pa_stream_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x64d): undefined reference to `pa_stream_connect_playback'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x67c): undefined reference to `pa_mainloop_iterate'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_OpenAudio':
(.text+0x691): undefined reference to `pa_stream_get_state'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `Audio_Available':
(.text+0x870): undefined reference to `pa_simple_new'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `Audio_Available':
(.text+0x87e): undefined reference to `pa_simple_free'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_pulseaudio.o): In function `PULSE_WaitDone':
(.text+0x1bf): undefined reference to `pa_operation_unref'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoQuit':
(.text+0x298): undefined reference to `aa_uninitkbd'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoQuit':
(.text+0x2a9): undefined reference to `aa_uninitmouse'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoQuit':
(.text+0x2e9): undefined reference to `aa_close'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x55b): undefined reference to `aa_parseoptions'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x568): undefined reference to `aa_defparams'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x56d): undefined reference to `aa_autoinit'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x591): undefined reference to `aa_autoinitkbd'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x5b2): undefined reference to `aa_autoinitmouse'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x5c5): undefined reference to `aa_getrenderparams'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_VideoInit':
(.text+0x5ea): undefined reference to `aa_resizehandler'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_DirectUpdate':
(.text+0x873): undefined reference to `aa_renderpalette'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_DirectUpdate':
(.text+0x898): undefined reference to `aa_flush'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_ResizeHandler':
(.text+0x91b): undefined reference to `aa_resize'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_ResizeHandler':
(.text+0x9c6): undefined reference to `aa_renderpalette'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aavideo.o): In function `AA_ResizeHandler':
(.text+0x9e2): undefined reference to `aa_flush'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_VideoQuit':
(.text+0x25d): undefined reference to `__caca0_free_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_VideoQuit':
(.text+0x26f): undefined reference to `__caca0_end'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_SetVideoMode':
(.text+0x2cc): undefined reference to `__caca0_free_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_SetVideoMode':
(.text+0x3c9): undefined reference to `__caca0_create_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x455): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x45d): undefined reference to `caca_get_canvas_height'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x464): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x46f): undefined reference to `caca_get_canvas_width'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x497): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x49f): undefined reference to `caca_dither_bitmap'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x4a4): undefined reference to `__caca0_dp'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_DirectUpdate':
(.text+0x4ac): undefined reference to `caca_refresh_display'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacavideo.o): In function `Caca_VideoInit':
(.text+0x589): undefined reference to `__caca0_init'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aaevents.o): In function `AA_PumpEvents':
(.text+0xc8): undefined reference to `aa_getmouse'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_aaevents.o): In function `AA_PumpEvents':
(.text+0x1e6): undefined reference to `aa_getevent'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0xb7): undefined reference to `__caca0_get_event'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1bc): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1c8): undefined reference to `caca_get_canvas_width'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1e8): undefined reference to `__caca0_cv'
./Myth2Stuff/LinuxStuff/SDL/libSDL.a(SDL_cacaevents.o): In function `Caca_PumpEvents':
(.text+0x1f0): undefined reference to `caca_get_canvas_height'
collect2: ld returned 1 exit status
However, here's a version of Myth2 that I've compiled to link dynamically to SDL, which should pick up whatever you have on your system.
Attachments
Myth2.zip
(800.11 KiB) Downloaded 315 times
flabbergastedpickle
Posts: 27
Joined: Mon Jan 16, 2012 3:54 pm

Re: Any plans for the native 64-bit Linux version?

Post by flabbergastedpickle »

Many thanks for doing this! Alas, no luck yet... Still the same problem plus some errors while running the app:

Inconsistency detected by ld.so: dl-close.c: 743: _dl_close: Assertion `map->l_init_called' failed!

Also had to restart the app initially a few times where pulseaudio failed as follows:

AL lib: pulseaudio.c:353: Received context failure!

3rd try worked and haven't had problems of this kind since, but the problem above persists...

At this point I am out of ideas...
flabbergastedpickle
Posts: 27
Joined: Mon Jan 16, 2012 3:54 pm

Re: Any plans for the native 64-bit Linux version?

Post by flabbergastedpickle »

Just to follow-up, I got my hands on the original Aquaria code from which the original deb package with problems was built and tried building both 32-bit and 64-bit versions of that app and none of them (no matter what version I used) exhibited the said problem. So, after 3 more hours poured into this issue, it seems to me potential discrepancies between build environments are the only remaining possible source of the problem.

What speaks in favor of this theory is also the error I encountered above while running your dynamically linked version, although this may also suggest that the Myth2 code may be altering a struct that is otherwise found in an external lib (maybe that is why it is linked statically against SDL in the first place) and hence inconsistency errors when using dynamic libs.

Finally, it seems the only remaining test to be done would be to build the executable on an Oneiric Ubuntu machine and see if the problem persists... My bet would be it wouldn't. So, any hope of you guys shifting your build environment forward to Oneiric (since I noticed you already use Ubuntu anyhow) and building a new version ;-)?
Myrd
Site Admin
Posts: 4031
Joined: Fri Mar 19, 2004 10:17 pm

Re: Any plans for the native 64-bit Linux version?

Post by Myrd »

flabbergastedpickle wrote: Finally, it seems the only remaining test to be done would be to build the executable on an Oneiric Ubuntu machine and see if the problem persists... My bet would be it wouldn't. So, any hope of you guys shifting your build environment forward to Oneiric (since I noticed you already use Ubuntu anyhow) and building a new version ;-)?
I agree that all signs currently point to the difference in build environments. I will see if I can get an Oneiric Ubuntu environment up to make you a test build, though I'm not sure when I'll have enough time to try this. However, it would be good to figure out what exactly about the build environment is causing this issue. Is it the compiler? Is it the versions of GL libraries we're linking against?

Once we can determine this, I would like to try to find a better solution than simply "just build on a different OS version and the problem magically disappears".

Another concern where we have to careful - at least for release builds - is what impact does building on a newer system have on the resulting binary. We've been very careful to not build Myth in such a way that makes the binary depend on only newer versions of GLIBC and other libraries - so that it could still run on older distros.
flabbergastedpickle
Posts: 27
Joined: Mon Jan 16, 2012 3:54 pm

Re: Any plans for the native 64-bit Linux version?

Post by flabbergastedpickle »

Again, many thanks for your reply. Indeed finding out what might be a problem is of the essence but remains elusive to me even after spending probably 6-8 hours on this issue...

It could be as ridiculous of an issue of Kernel 2.6* vs 3.* or as we already discussed glibc or any of the other libs. I am simply unable to recreate problem that was provided in a build of Aquaria done on a remote machine locally and as such further troubleshooting on my end is simply impossible without the access to such a machine...

Again, many thanks for your help on this one. It would be truly awesome to play without those annoying artifacts again :-)
Myrd
Site Admin
Posts: 4031
Joined: Fri Mar 19, 2004 10:17 pm

Re: Any plans for the native 64-bit Linux version?

Post by Myrd »

Here's a version compiled on Ubuntu 11.10. Let's see if that one makes a difference.
Attachments
Myth2.zip
(978.65 KiB) Downloaded 326 times
flabbergastedpickle
Posts: 27
Joined: Mon Jan 16, 2012 3:54 pm

Re: Any plans for the native 64-bit Linux version?

Post by flabbergastedpickle »

Well this is insane... I just tried Ubuntu 11.10 version you posted and the problem still persists... I guess this is the end of that... Many thanks for all your help! I officially give up... BTW you did use Ubuntu native libSDL.a?

At any rate, once again many thanks for all your help!
Myrd
Site Admin
Posts: 4031
Joined: Fri Mar 19, 2004 10:17 pm

Re: Any plans for the native 64-bit Linux version?

Post by Myrd »

flabbergastedpickle wrote:BTW you did use Ubuntu native libSDL.a?
I did not - I guess one more thing worth to try.
Post Reply