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

_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to