Joe Kelsey
2003-Jun-19 12:17 UTC
flashpluginwrapper for Flash 6 (Shared Library Tools redux)
Ok. I hand-modified the linux-flashplugin6 shared library to remove all of the DT_NEEDED entries. I then modified flashpluginwrapper to add the following functions: void __assert_fail(const char *assertion, const char *file, unsigned int line, const char *function) { fprint (stderr, "%s:%d:%s: %s\n", file, line, function, assertion); abort (); } #include <ctype.h> int __ctype_toupper(int c) { return toupper (c); } unsigned short int __ctype_b[256]; #include <errno.h> int *__errno_location(void) { return __error (); } unsigned long int __strtoul_internal(const char *__nptr, char **__endptr, int __base, int __group) { return strtoul (__nptr, __endptr, __base); } void __terminate() { fprintf (stderr, "terminate!\n"); } ssize_t __write (int __fd, const void *__buf, size_t __size) { return write (__fd, __buf, __size); } int __fxstat(int __ver, int __filedesc, struct stat *__stat_buf) { return fstat (__filedesc, __stat_buf); } int __xstat(int __ver, const char *__filename, struct stat *__stat_buf) { return stat (__filename, __stat_buf); } I installed this new version of flashpluginwrapper, installed the linux-flashplugin6 library in browser_plugins. Now, the Flash 6 code segfaults in pthread_mutex_init(), called from Program received signal SIGSEGV, Segmentation fault. 0x284549d6 in pthread_mutex_init () from /usr/lib/libc_r.so.4 (gdb) bt #0 0x284549d6 in pthread_mutex_init () from /usr/lib/libc_r.so.4 #1 0x298016b0 in MPCriticalSection::MPCriticalSection () from /usr/X11R6/lib/browser_plugins/libflashplayer.so #2 0x297fdfd5 in PlatformGlobals::PlatformGlobals () from /usr/X11R6/lib/browser_plugins/libflashplayer.so #3 0x2983c8de in NPP_GetValue () from /usr/X11R6/lib/browser_plugins/libflashplayer.so #4 0x2983c91a in NPP_GetValue () from /usr/X11R6/lib/browser_plugins/libflashplayer.so #5 0x2985ea55 in __pure_virtual () from /usr/X11R6/lib/browser_plugins/libflashplayer.so #6 0x29761cbe in _init () from /usr/X11R6/lib/browser_plugins/libflashplayer.so #7 0x28081acf in find_symdef () from /usr/libexec/ld-elf.so.1 #8 0x280823ef in dlopen () from /usr/libexec/ld-elf.so.1 #9 0x28128c18 in PR_LoadLibrary () from /usr/X11R6/lib/mozilla/./libnspr4.so #10 0x28128b34 in PR_LoadLibraryWithFlags () ... Anyone familiar enough with Mozilla internals to understand why pthread_mutex_init segfaults? Has Mozilla started its own threads by the time it loads the libraries? I don't know where to look to track this down. Maybe a difference between Linux and FreeBSD in the pthread semantics? /Joe