Page 2 of 4

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

Posted: Wed Jan 18, 2012 10:05 am
by vinylrake
Myth is not open source.

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

Posted: Wed Jan 18, 2012 10:30 am
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.

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

Posted: Wed Jan 18, 2012 11:52 pm
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?

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

Posted: Thu Jan 19, 2012 12:09 am
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!

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

Posted: Thu Jan 19, 2012 12:21 am
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.

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

Posted: Thu Jan 19, 2012 12:50 am
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.

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

Posted: Thu Jan 19, 2012 1:02 am
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...

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

Posted: Thu Jan 19, 2012 1:13 am
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.

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

Posted: Thu Jan 19, 2012 1:22 am
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...

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

Posted: Fri Jan 20, 2012 9:07 am
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 ;-)?

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

Posted: Fri Jan 20, 2012 5:42 pm
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.

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

Posted: Fri Jan 20, 2012 5:46 pm
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 :-)

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

Posted: Fri Jan 20, 2012 9:20 pm
by Myrd
Here's a version compiled on Ubuntu 11.10. Let's see if that one makes a difference.

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

Posted: Fri Jan 20, 2012 10:00 pm
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!

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

Posted: Fri Jan 20, 2012 10:26 pm
by Myrd
flabbergastedpickle wrote:BTW you did use Ubuntu native libSDL.a?
I did not - I guess one more thing worth to try.