discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] error


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] error
Date: Tue, 11 Jan 2005 08:05:15 -0800
User-agent: Mutt/1.5.6i

On Tue, Jan 11, 2005 at 04:24:14PM +0100, Martin Dvh wrote:
> Martin Dvh wrote:
> 
> >>Did the test program catch the error and say it caught a SIGBUS?
> >
> >I just got the output as shown above:
> > >>>Segmentation fault
> 
> Tonight I rebuilt recent cvs with gcc-3.4 and my whole system up-to-date 
> (dist-update, dist-upgrade, old swig library 1.3.21 removed)
> I still with gcc-3.4 get a segfault and no more info.
> 

You might want to try running tests/test_vmcircbuf under gdb and see
what happens.

I suspect that you'll see that its getting a SIGSEGV or SIGBUS from
some place below test_factory even though there are properly installed
signal handlers. 


See gnuradio-core/src/lib/runtime/gr_local_sighandler.{h,cc} for the signal 
handing code.
gnuradio-core/src/lib/runtime/gr_vmcircbuf.cc sets up the sighandlers here:


bool
gr_vmcircbuf_sysconfig::test_factory (gr_vmcircbuf_factory *f, int verbose)
{
  // Install local signal handlers for SIGSEGV and SIGBUS.
  // If something goes wrong, these signals may be invoked.
  
  gr_local_sighandler sigsegv (SIGSEGV, gr_local_sighandler::throw_signal);
  gr_local_sighandler sigbus (SIGBUS, gr_local_sighandler::throw_signal);

  try {
    return standard_tests (f, verbose);
  }
  catch (gr_signal &sig){
    if (verbose){
      fprintf (stderr, "....... %s: %s", f->name (), "Failed\n");
      fprintf (stderr,
               "gr_vmcircbuf_factory::test_factory (%s): caught %s\n",
               f->name (), sig.name().c_str());
      return false;
    }
  }
  catch (...){
    if (verbose){
      fprintf (stderr, "....... %s: %s", f->name (), "Failed\n");
      fprintf (stderr,
               "gr_vmcircbuf_factory::test_factory (%s): some kind of uncaught 
exception\n",
               f->name ());
    }
    return false;
  }
}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]