---------- Forwarded message ----------
Date: Thu, 24 Mar 2011 08:53:13 -0500
From: Matthew Knepley <[email protected]>
To: Sebastian Steiger <[email protected]>,
    petsc-maint <[email protected]>
Cc: Roy Stogner <[email protected]>
Subject: Re: [petsc-maint #67637] Re: [petsc-users] Scalability of AO ?

On Thu, Mar 24, 2011 at 8:51 AM, Sebastian Steiger <[email protected]> wrote:
      Matt,

      >     >     ==14358== Invalid write of size 8
      >     >     ==14358==    at 0xAE305B2: SNESLineSearchSetParams(_p_SNES*,
      >     double,
      >     >     double, double) (lsparams.c:42)
      >     >     ==14358==    by 0x50216E4:
      >     >     NonlinearPoisson::set_numerical_solver_options()
      >     >     (NonlinearPoisson.cpp:998)
      >
      >     >
      >     > This does not appear to have to do with the last argument. For 
line
      >     > lsparams.c:42 of petsc-dev I have
      >     >
      >     >   if (maxstep >= 0.0) ls->maxstep     = maxstep;
      >     >
      > This is fairly simple to look at with gdb. What does the ls struct look
      > like?


      After I recompiled PETSc with -O0 I see the following in gdb:


      Program received signal SIGSEGV, Segmentation fault.
      0x00007ffff0b4b5d0 in SNESLineSearchSetParams (snes=0xb0f100, alpha=-2,
      maxstep=8.875, minlambda=-2) at lsparams.c:42
      42        if (maxstep >= 0.0) ls->maxstep     = maxstep;
      (gdb) print snes
      $1 = (SNES) 0xb0f100
      (gdb) print ls
      $2 = (SNES_LS *) 0x0
      (gdb) where
      #0  0x00007ffff0b4b5d0 in SNESLineSearchSetParams (snes=0xb0f100,
      alpha=-2, maxstep=8.875, minlambda=-2) at lsparams.c:42
      #1  0x00007ffff78a96e5 in NonlinearPoisson::set_numerical_solver_options
      (this=0xa18890) at NonlinearPoisson.cpp:998
      ...

      So it looks like ls is NULL. When I browse through our code I see that
      we're getting the SNES object from libmesh and we're not calling
      SNESSetType() explicitly on our side. Might there be a change in default
      behavior?


Its not a change in default behavior, but could easily be a an unintended side
effect. For instance, if SNESSetFromOptions() was originally being called, it
would set a default type. However, if that and SNESSetType() is missing, we
trust the user that they do not want the type set.

    Matt
 
      Maybe you could introduce a small assert that ls!=NULL...



      >     >     1) My application is used by grad students who do not know
      >     much about compiling, HPC etc.
      >     > I think this is orthogonal since we are not talking about users
      >     building the code, only maintainers that build the code in either 
case.
      >
      >     Well, our students do build the code because they contribute some 
small
      >     parts, but their knowledge is limited to typing 'make'.
      >
      > Exactly. That should work the same.


      ... except that we also have SLEPc and libmesh to build which depend on
      PETSc. I had to bother Jose Roman and Roy Stogner to get their
      dev-versions working with petsc-dev. All in all it's just a painful
      process that we'd only like to go through once a year or so.

      Sebastian




--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software 
be a part of the solution? Download the Intel(R) Manageability Checker 
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to