glibc 2.5 에서 2.7 사이의 gettext()는 쓰레드에 안전하기 않기 때문에
VLC에서 상기버전의 glibc를 사용하고 있다면 실행시에 에러를 발생하고 실행을 하지 않는다.
vlc-1.0.5/src/misc/linux_specific.c 파일의 75라인부터 아래의 내용이 존재한다.
그리고 vlc-1.0.5/configure.ac 의 532 라인에는 다음과 같은 내용이 존재한다.
위의 abort(); 를 주석처리 하거나
DISABLE_BUGGY_CLIBC_CHECK를 미리 선언하거나 하면 될꺼 같은데 어떻게 해야 하려나?
(아무튼 abort(); 를 주석처리 하면 실행은 된다.)
VLC에서 상기버전의 glibc를 사용하고 있다면 실행시에 에러를 발생하고 실행을 하지 않는다.
vlc-1.0.5/src/misc/linux_specific.c 파일의 75라인부터 아래의 내용이 존재한다.
#ifdef __GLIBC__ # include# include #endif void system_Init (libvlc_int_t *libvlc, int *argc, const char *argv[]) { #ifdef __GLIBC__ const char *glcv = gnu_get_libc_version (); /* gettext in glibc 2.5-2.7 is not thread-safe. LibVLC keeps crashing, * especially in sterror_r(). Even if we have NLS disabled, the calling * process might have called setlocale(). */ if (strverscmp (glcv, "2.5") >= 0 && strverscmp (glcv, "2.8") < 0) { fputs ("LibVLC has detected an unusable buggy GNU/libc version.\n" "Please update to version 2.8 or newer.\n", stderr); fflush (stderr); #ifndef DISABLE_BUGGY_GLIBC_CHECK abort (); #endif } #endif
그리고 vlc-1.0.5/configure.ac 의 532 라인에는 다음과 같은 내용이 존재한다.
dnl dnl Buggy glibc prevention. Purposedly not cached. dnl Ubuntu alone has 20 bug numbers for this... dnl AC_MSG_CHECKING(for buggy GNU/libc versions) AC_PREPROC_IFELSE([ #include <limits.h> #if defined (__GLIBC__) && (__GLIBC__ == 2) \ && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7) # error GNU/libc with dcgettext killer bug! #endif ], [ AC_MSG_RESULT([not present]) ], [ AC_MSG_RESULT([found]) AS_IF([test "x${enable_nls}" != "xno" || test "x${enable_mozilla}" != "xno"], [ AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable work-around for this. Check with your distribution vendor on how to update the glibc run-time. Alternatively, build with --disable-nls --disable-mozilla and be sure to not use LibVLC from other applications/wrappers.]) ], [ AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.]) ]) ]) |
위의 abort(); 를 주석처리 하거나
DISABLE_BUGGY_CLIBC_CHECK를 미리 선언하거나 하면 될꺼 같은데 어떻게 해야 하려나?
(아무튼 abort(); 를 주석처리 하면 실행은 된다.)
'프로그램 사용 > VLC' 카테고리의 다른 글
VLC nightly build (0) | 2010.04.13 |
---|---|
VLC 크로스컴파일 - 멀고도 험하다 ㅠ.ㅠ (0) | 2010.03.17 |
VLC 1.0.5 컴파일시 magic.h 오류 (0) | 2010.03.10 |
x264 , libavcodec 다운로드 (0) | 2010.02.24 |
vlc-1.0.5 cross compile (3) | 2010.02.09 |