Call for pkgsrc help - Firefox broken

Ferruccio Zamuner nonsolosoft at diff.org
Sat Jul 5 03:48:40 PDT 2008


Hasso Tepper wrote:

/scratch/www/firefox/work/mozilla/security/nss/cmd/shlibsign/DragonFly1.13_OPT.OBJ/shlibsign -v -i /scratch/www/firefox/work/mozilla/dist/lib/libsoftokn3.so
Bus error (core dumped)
make[3]: *** [/scratch/www/firefox/work/mozilla/dist/lib/libsoftokn3.chk] 
Error 138
Looking at backtrace of shlibsign.core it seems a recursive function 
call that doesn't meet the exit condition:

ore was generated by `shlibsign'.
Program terminated with signal 10, Bus error.
#0  0x280aacb4 in RNG_RNGInit ()
   from /usr/obj/pkgsrc/www/firefox/work/mozilla/dist/lib/libssl3.so
(gdb) backtrace
#0  0x280aacb4 in RNG_RNGInit ()
   from /usr/obj/pkgsrc/www/firefox/work/mozilla/dist/lib/libssl3.so
#1  0x280aacea in RNG_RNGInit ()
   from /usr/obj/pkgsrc/www/firefox/work/mozilla/dist/lib/libssl3.so
#2  0x280aacea in RNG_RNGInit ()
   from /usr/obj/pkgsrc/www/firefox/work/mozilla/dist/lib/libssl3.so
[...]
#10139 0x280aacea in RNG_RNGInit ()
   from /usr/obj/pkgsrc/www/firefox/work/mozilla/dist/lib/libssl3.so
[...] same as above
/usr/obj/pkgsrc/www/firefox/work/mozilla/security/nss/lib/freebl/prng_fips1861.c, 
 line 397:
/*
 * Initialize the global RNG context and give it some seed input taken
 * from the system.  This function is thread-safe and will only allow
 * the global context to be initialized once.  The seed input is likely
 * small, so it is imperative that RNG_RandomUpdate() be called with
 * additional seed data before the generator is used.  A good way to
 * provide the generator with additional entropy is to call
 * RNG_SystemInfoForRNG().  Note that NSS_Init() does exactly that.
 */
SECStatus
RNG_RNGInit(void)
{
    /* Allow only one call to initialize the context */
    PR_CallOnce(&coRNGInit, rng_init);
    /* Make sure there is a context */
    return (globalrng != NULL) ? PR_SUCCESS : PR_FAILURE;
}

and in
/usr/obj/pkgsrc/www/firefox/work/mozilla/security/nss/lib/freebl/loader.c 
line: 923:

SECStatus
RNG_RNGInit(void)
{
  if (!vector && PR_SUCCESS != freebl_RunLoaderOnce())
      return SECFailure;
  return (vector->p_RNG_RNGInit)();
}
but in 
/usr/obj/pkgsrc/www/firefox/work/mozilla/security/nss/lib/freebl/prng_fips1861.c
there is note:

/* Use NSPR to prevent RNG_RNGInit from being called from separate
 * threads, creating a race condition.
 */
static const PRCallOnceType pristineCallOnce;
static PRCallOnceType coRNGInit;
static PRStatus rng_init(void)
{
[...]
}
I hope that this could be usefull as investigation to fix the bug.

bye,            \fer





More information about the Users mailing list