[parisc-linux] tar hangs on 715/75

Richard Hirst rhirst@linuxcare.com
Mon, 22 Jan 2001 16:50:14 +0000


Hi,
  tar (and nscd) hang on my 715/75.  Same binaries/libraries work on
the B180.  The hang is in __pthread_acquire() called from
pthread_initialize().  On the B180 the code sequence goes like this
(tracing branches):

IAOQ: 40161eff 4015df47         <pthread_initialize+348>
IAOQ: 4015df53 4006b63f         <_init+1136>
IAOQ: 4006b65f 00000103         <__sigprocmask+32>
>>>> Heading for space 0 <<<<
IAOQ: 4006b66f 4006b687         <__sigprocmask+48>
IAOQ: 4006b693 40161f03         <__sigprocmask+84>
IAOQ: 40161f37 4015df37         <pthread_initialize+404>
IAOQ: 4015df43 4006e983         <_init+1120>
IAOQ: 4006e9af 4006e82f         <__cxa_atexit+44>
IAOQ: 4006e867 400860cf         <__new_exitfn+56>
IAOQ: 400860db 40160ed7         <____strtod_l_internal+15484>
IAOQ: 40160f07 40160f0b         <__pthread_mutex_lock+48>
IAOQ: 40160f0f 4016107f         <__pthread_mutex_lock+56>
IAOQ: 40161083 40164c63         <__pthread_mutex_lock+428>
IAOQ: 40164c93 4016508f         <__pthread_alt_lock+48>
IAOQ: 401650cf 40165107         <__pthread_acquire+64>
IAOQ: 4016511f 40164c97         <__pthread_acquire+144>
IAOQ: 40164cab 40164d53         <__pthread_alt_lock+72>
IAOQ: 40164d57 40164d63         <__pthread_alt_lock+244>
IAOQ: 40164d7b 40161087         <__pthread_alt_lock+280>
IAOQ: 4016109b 4006e86b         <__pthread_mutex_lock+452>
IAOQ: 4006e893 4006e8c7         <__new_exitfn+100>
etc

while on the 715/75 it goes like this:

IAOQ: 40161eff 4015df47         <pthread_initialize+348>
IAOQ: 4015df53 4006b63f         <_init+1136>
IAOQ: 4006b65f 00000103         <__sigprocmask+32>
>>>> Heading for space 0 <<<<
IAOQ: 4006b66f 4006b687
IAOQ: 4006b693 40161f03
IAOQ: 40161f37 4015df37
IAOQ: 4015df43 4006e983
IAOQ: 4006e9af 4006e82f
IAOQ: 4006e867 400860cf
IAOQ: 400860db 40160ed7
IAOQ: 40160f07 40160f0b
IAOQ: 40160f0f 4016107f
IAOQ: 40161083 40164c63
IAOQ: 40164c93 4016508f         <__pthread_alt_lock+48>
IAOQ: 401650df 4015dba7         <__pthread_acquire+80>
IAOQ: 4015dbb3 400f546f         <_init+208>
IAOQ: 400f5473 00000103         <sched_yield+4>
>>>> Heading for space 0 <<<<


from which I conclude that __pthread_acquire(int *spinlock) found the
spinlock held.

Relevant bit of pthread_initialize() looks like this:

  sigprocmask(SIG_BLOCK, &mask, NULL);
  /* Register an exit function to kill all other threads. */
  /* Do it early so that user-registered atexit functions are called
     before pthread_*exit_process. */
#ifndef HAVE_Z_NODELETE
  if (__builtin_expect (&__dso_handle != NULL, 1))
    __cxa_atexit ((void (*) (void *)) pthread_atexit_process, NULL,
                  __dso_handle);
  else
#endif
    __on_exit (pthread_onexit_process, NULL);


Do other people see this problem on 715/old machines?  Just type 'tar';
if you have the problem you'll never see the usage message.

Even better, does anyone have any suggestions as to what might be
causing it?  I am using taggarts new tarball nfsroot.

Richard