Simple Directmedia Layer
Go to file
Sam Lantinga 8077bf3d10 Fixed bug 2618 - incomplete pthread-based lock support should be removed
binarycrusader

Since changeset 358696c354a8, SDL 2.0 has been broken on Solaris when compiling with the Solaris Studio compiler (which uses the pthread implementation of SDL_AtomicLock).

Notably, it gets stuck at the MemoryBarrierRelease in SDL_GetErrBuf:

6585 # 218
6586     if (!tls_errbuf && !tls_being_created) {
6587          SDL_AtomicLock_REAL ( & tls_lock );
6588         if (!tls_errbuf) {
6589             SDL_TLSID slot;
6590             tls_being_created = SDL_TRUE;
6591             slot =  SDL_TLSCreate_REAL ( );
6592             tls_being_created = SDL_FALSE;
6593              { SDL_SpinLock _tmp = 0 ; SDL_AtomicLock_REAL ( & _tmp ) ; SDL_AtomicUnlock_REAL ( & _tmp ) ; };
^^^ loops forever above
6594             tls_errbuf = slot;
6595         }
6596          SDL_AtomicUnlock_REAL ( & tls_lock );
6597     }


Running: testthread
(process id 28926)
^Cdbx: warning: Interrupt ignored but forwarded to child.
signal INT (Interrupt) in __nanosleep at 0xfe52a875
0xfe52a875: __nanosleep+0x0015: jae      __nanosleep+0x23   [ 0xfe52a883, .+0xe ]
Current function is SDL_Delay_REAL
  204           was_error = nanosleep(&tv, &elapsed);
(dbx) where
  [1] __nanosleep(0xfeffe848, 0xfeffe850, 0xfe75a5ac, 0xfe5169d8), at 0xfe52a875
  [2] nanosleep(0xfeffe848, 0xfeffe850), at 0xfe516a3b
=>[3] SDL_Delay_REAL(ms = 0), line 204 in "SDL_systimer.c"
  [4] SDL_AtomicLock_REAL(lock = 0xfeffe88c), line 104 in "SDL_spinlock.c"
  [5] SDL_GetErrBuf(), line 225 in "SDL_thread.c"
  [6] SDL_ClearError_REAL(), line 216 in "SDL_error.c"
  [7] SDL_InitSubSystem_REAL(flags = 0), line 116 in "SDL.c"
  [8] SDL_Init_REAL(flags = 0), line 244 in "SDL.c"
  [9] SDL_Init(a = 0), line 89 in "SDL_dynapi_procs.h"
  [10] main(argc = 1, argv = 0xfeffe948), line 65 in "testthread.c"

As far as I can tell, this is because pthread_spin_trylock() always returns EBUSY for this particular lock; since it works in other places, I'm suspicious.

Different Solaris Studio compiler versions seem to make no difference.

I've verified this is broken on Linux as well if SDL_spinlock.c is modified to use the pthread implementation.

This appears to be because pthread_spin_init() and pthread_spin_destroy() are not used with the locks as required.
2014-07-07 21:27:42 -07:00
acinclude Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
android-project Merged changes from Alexey Petruchik to support Android obb files 2014-06-21 20:35:36 -07:00
build-scripts Fixed indentation for pnacl configuration 2014-07-07 11:13:19 -07:00
cmake Fixed bug 2618 - incomplete pthread-based lock support should be removed 2014-07-07 21:27:42 -07:00
debian Added libibus-1.0-dev build dependency 2014-06-21 17:31:36 -07:00
include Fixed bug 2618 - incomplete pthread-based lock support should be removed 2014-07-07 21:27:42 -07:00
premake Fixed bug 2618 - incomplete pthread-based lock support should be removed 2014-07-07 21:27:42 -07:00
src Fixed bug 2618 - incomplete pthread-based lock support should be removed 2014-07-07 21:27:42 -07:00
test Enable 2 disabled audio tests (since bug 1396 is fixed and they pass now) 2014-07-07 20:26:21 -07:00
VisualC Split the XInput and DirectInput code so Windows RT can use the existing XInput support. 2014-07-03 15:39:55 -07:00
VisualC-WinRT Made the latest XInput + Haptic changes compile and run on WinRT 2014-07-04 18:20:23 -04:00
visualtest Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
Xcode Added OpenGL ES headers to public headers 2014-06-21 11:42:46 -07:00
Xcode-iOS Fixed bug 2626 - iOS: fix test and template Xcode projects and build scripts to link with CoreMotion 2014-07-07 10:42:19 -07:00
.hgignore Merged Ryan's SDL-gui-backend branch. 2014-06-25 17:06:12 -04:00
Android.mk Fixed Android error on static lib build, if relative NDK_MODULE_PATH used 2014-06-15 13:01:10 -07:00
autogen.sh Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
BUGS.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
cmake_uninstall.cmake.in Add suport for "make uninstall" to cmake. 2014-06-16 10:58:09 -03:00
CMakeLists.txt Partial fix for bug 2556 - add compilation flag -Wshadow 2014-06-22 11:02:56 -07:00
configure Fixed bug 2626 - iOS: fix test and template Xcode projects and build scripts to link with CoreMotion 2014-07-07 10:42:19 -07:00
configure.in Fixed bug 2618 - incomplete pthread-based lock support should be removed 2014-07-07 21:27:42 -07:00
COPYING.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
CREDITS.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
INSTALL.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
Makefile.in Make autoconf-based build quiet by default. 2014-06-19 00:40:09 -04:00
Makefile.minimal Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
Makefile.pandora Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
Makefile.psp Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
Makefile.wiz Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-android.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-cmake.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-directfb.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-dynapi.txt Minor change to a README to test Mercurial server. 2014-04-12 17:40:55 -04:00
README-gesture.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-hg.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-ios.txt Updated iOS deployment target to iOS 5.1 2014-05-10 12:34:16 -07:00
README-linux.txt Corrected package list for Wayland/Mir support (was missing libxkbcommon-dev). 2014-06-05 01:55:52 -04:00
README-macosx.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-nacl.txt Initialize nacl_io, removes SDL_NaClMount/Umount 2014-06-20 10:59:51 -03:00
README-pandora.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-platforms.txt Added NaCl to the supported platforms list 2014-06-21 11:50:18 -07:00
README-porting.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-psp.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-raspberrypi.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-SDL.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-touch.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-wince.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-windows.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README-winrt.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
README.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
sdl2-config.in Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
sdl2.m4 Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
sdl2.pc.in Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
SDL2.spec.in Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
TODO.txt Added a README file regarding WinRT support 2014-04-09 21:29:19 -04:00
VisualC.html Fixed nesting of HTML elements in documentation. 2014-06-09 17:37:59 +02:00
WhatsNew.txt Chrome's Native Client backend implementation 2014-06-06 15:45:59 -03:00

                         Simple DirectMedia Layer

                                  (SDL)

                                Version 2.0

---
http://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed
to provide low level access to audio, keyboard, mouse, joystick, and graphics
hardware via OpenGL and Direct3D. It is used by video playback software,
emulators, and popular games including Valve's award winning catalog
and many Humble Bundle games.

SDL officially supports Windows, Mac OS X, Linux, iOS, and Android.
Support for other platforms may be found in the source code.

SDL is written in C, works natively with C++, and there are bindings 
available for several other languages, including C# and Python.

This library is distributed under the zlib license, which can be found
in the file "COPYING.txt".

The best way to learn how to use SDL is to check out the header files in
the "include" subdirectory and the programs in the "test" subdirectory.
The header files and test programs are well commented and always up to date.
More documentation and FAQs are available online at:
	http://wiki.libsdl.org/

If you need help with the library, or just want to discuss SDL related
issues, you can join the developers mailing list:
	http://www.libsdl.org/mailing-list.php

If you want to report bugs or contribute patches, please submit them to
bugzilla:
    http://bugzilla.libsdl.org/

Enjoy!
	Sam Lantinga				(slouken@libsdl.org)