[petsc-users] DMPlexCreateExodusFromFile() does not work on macOS Sierra

Fande Kong fdkong.jd at gmail.com
Sun Jan 22 20:40:15 CST 2017


Thanks, Matt.

It is a weird bug.

Do we have an alternative solution to this? I was wondering whether it is
possible to read the ".exo" files without using the ExodusII. For example,
can we read the ".exo" files using the netcdf only?


Fande Kong,



On Sun, Jan 22, 2017 at 6:50 PM, Matthew Knepley <knepley at gmail.com> wrote:

> On Sun, Jan 22, 2017 at 5:28 PM, Fande Kong <fdkong.jd at gmail.com> wrote:
>
>> On Sun, Jan 22, 2017 at 12:35 PM, Matthew Knepley <knepley at gmail.com>
>> wrote:
>>
>>> On Sun, Jan 22, 2017 at 12:41 PM, Fande Kong <fdkong.jd at gmail.com>
>>> wrote:
>>>
>>>> On Sat, Jan 21, 2017 at 10:47 PM, Matthew Knepley <knepley at gmail.com>
>>>> wrote:
>>>>
>>>>> On Sat, Jan 21, 2017 at 10:38 PM, Fande Kong <fdkong.jd at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> I upgraded the OS system to macOS Sierra, and observed that PETSc can
>>>>>> not read the exodus file any more. The same code runs fine on macOS
>>>>>> Capitan. I also tested the function DMPlexCreateExodusFromFile() against
>>>>>> different versions of the GCC compiler such as GCC-5.4 and GCC-6, and
>>>>>> neither of them work. I guess this issue is related to the external package
>>>>>> *exodus*, and PETSc might not pick up the right enveriment variables
>>>>>> for the *exodus.*
>>>>>>
>>>>>> This issue can be reproduced using the following simple code:
>>>>>>
>>>>>
>>>>> 1) This is just a standard check. Have you reconfigured so that you
>>>>> know ExodusII was built with the same compilers and system libraries?
>>>>>
>>>>> 2) If so, can you get a stack trace with gdb or lldb?
>>>>>
>>>>
>>>> 0   libsystem_kernel.dylib         0x00007fffad8b8dda __pthread_kill +
>>>> 10
>>>> 1   libsystem_pthread.dylib       0x00007fffad9a4787 pthread_kill + 90
>>>> 2   libsystem_c.dylib             0x00007fffad81e420 abort + 129
>>>> 3   libpetsc.3.7.dylib             0x00000001100eb9ee
>>>> PetscAbortErrorHandler + 506 (errstop.c:40)
>>>> 4   libpetsc.3.7.dylib             0x00000001100e631d PetscError + 916
>>>> (err.c:379)
>>>> 5   libpetsc.3.7.dylib             0x00000001100ed830
>>>> PetscSignalHandlerDefault + 1927 (signal.c:160)
>>>> 6   libpetsc.3.7.dylib             0x00000001100ed088
>>>> PetscSignalHandler_Private(int) + 630 (signal.c:49)
>>>> 7   libsystem_platform.dylib       0x00007fffad997bba _sigtramp + 26
>>>> 8   ???                           0x000000011ea09370
>>>> initialPoolContent + 19008
>>>> 9   libnetcdf.7.dylib             0x000000011228fc62 utf8proc_map +
>>>> 210 (dutf8proc.c:543)
>>>> 10  libnetcdf.7.dylib             0x000000011228fd0f utf8proc_NFC + 38
>>>> (dutf8proc.c:568)
>>>> 11  libnetcdf.7.dylib             0x00000001122a7928 NC_findattr + 110
>>>> (attr.c:341)
>>>> 12  libnetcdf.7.dylib             0x00000001122a7a4e NC_lookupattr +
>>>> 119 (attr.c:384)
>>>> 13  libnetcdf.7.dylib             0x00000001122a93ef NC3_get_att + 47
>>>> (attr.c:1138)
>>>> 14  libnetcdf.7.dylib             0x0000000112286126 nc_get_att_float
>>>> + 90 (dattget.c:192)
>>>> 15  libpetsc.3.7.dylib             0x00000001117f3a5b ex_open_int +
>>>> 171 (ex_open.c:259)
>>>> 16  libpetsc.3.7.dylib             0x0000000110c36609
>>>> DMPlexCreateExodusFromFile + 781 (plexexodusii.c:43)
>>>> 17  DMPlexCreateExodusFromFile     0x000000010fed4cfc main + 397
>>>> (DMPlexCreateExodusFromFile.cpp:24)
>>>> 18  libdyld.dylib                 0x00007fffad78a255 start + 1
>>>>
>>>
>>> This is a NetCDF error on ex_open_int(). My guess is that your NetCDF
>>> build is old and when it calls the system DLL
>>> you bomb. Can you do a completely new build, meaning either reclone
>>> PETSc somewhere else, or delete the whole
>>> $PETSC_DIR/$PETSC_ARCH/externalpackage directory and reconfigure/build?
>>>
>>>   Thanks,
>>>
>>>       Matt
>>>
>>>
>>
>> Hi Matt,
>>
>> Thanks for reply.  I recloned  PETSc (the old petsc folder is deleted
>> completely) and reconfigure. And still has the same issue. I also checked
>> if the binary is complied against any other netcdf. The binary is actually
>> complied against the right netcdf installed through PETSc.
>>
>
> You can see that this crash happens on the call to
>
>   int   CPU_word_size = 0, IO_word_size = 0, exoid = -1;
>   float version;
>
>   exoid = ex_open(filename, EX_READ, &CPU_word_size, &IO_word_size,
> &version);
>
> which means the fault is not in PETSc, but rather in ExodusII for your
> machine. We could definitely
> confirm this if you made a 5 line program that only called this, but I
> don't see why it should be different.
> I am not sure what to do, since I am not in control of anything about
> ExodusII. Can you report this to
> their dev team? It is strange since Blaise has not reported this, and I
> know he uses it all the time.
>
>  Thanks,
>
>     Matt
>
>
>> *LiviadeMacBook-Pro:partition livia$ otool -L  DMPlexCreateExodusFromFile*
>> *DMPlexCreateExodusFromFile:*
>> * /Users/livia/math/petsc/arch-darwin-cxx-debug/lib/libpetsc.3.7.dylib
>> (compatibility version 3.7.0, current version 3.7.5)*
>> *
>> /Users/livia/math/petsc/arch-darwin-cxx-debug/lib/libsuperlu_dist.5.dylib
>> (compatibility version 5.0.0, current version 5.1.3)*
>> * /Users/livia/math/petsc/arch-darwin-cxx-debug/lib/libparmetis.dylib
>> (compatibility version 0.0.0, current version 0.0.0)*
>> * /Users/livia/math/petsc/arch-darwin-cxx-debug/lib/libmetis.dylib
>> (compatibility version 0.0.0, current version 0.0.0)*
>> * /Users/livia/math/petsc/arch-darwin-cxx-debug/lib/libnetcdf.7.dylib
>> (compatibility version 10.0.0, current version 10.0.0)*
>> * /Users/livia/math/petsc/arch-darwin-cxx-debug/lib/libhdf5_hl.8.dylib
>> (compatibility version 9.0.0, current version 9.1.0)*
>> * /Users/livia/math/petsc/arch-darwin-cxx-debug/lib/libhdf5.8.dylib
>> (compatibility version 9.0.0, current version 9.1.0)*
>> * /opt/X11/lib/libX11.6.dylib (compatibility version 10.0.0, current
>> version 10.0.0)*
>> * /Users/livia/math/mpich-3.2_install/lib/libmpifort.12.dylib
>> (compatibility version 14.0.0, current version 14.0.0)*
>> * /usr/local/opt/gcc at 5/lib/gcc/5/libgfortran.3.dylib (compatibility
>> version 4.0.0, current version 4.0.0)*
>> * /usr/local/opt/gcc at 5/lib/gcc/5/libquadmath.0.dylib (compatibility
>> version 1.0.0, current version 1.0.0)*
>> * /Users/livia/math/mpich-3.2_install/lib/libmpicxx.12.dylib
>> (compatibility version 14.0.0, current version 14.0.0)*
>> * /usr/local/opt/gcc at 5/lib/gcc/5/libstdc++.6.dylib (compatibility version
>> 7.0.0, current version 7.21.0)*
>> * /usr/local/opt/gcc at 5/lib/gcc/5/libgcc_s.1.dylib (compatibility version
>> 1.0.0, current version 1.0.0)*
>> * /Users/livia/math/mpich-3.2_install/lib/libmpi.12.dylib (compatibility
>> version 14.0.0, current version 14.0.0)*
>> * /Users/livia/math/mpich-3.2_install/lib/libpmpi.12.dylib (compatibility
>> version 14.0.0, current version 14.0.0)*
>> * /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>> version 1238.0.0)*
>> * /usr/local/lib/gcc/5/libgcc_s.1.dylib (compatibility version 1.0.0,
>> current version 1.0.0)*
>>
>>
>>
>>
>>
>>>
>>>>
>>>
>>>>>    Matt
>>>>>
>>>>>
>>>>>> *static char help[] = " create mesh from exodus.\n\n";*
>>>>>>
>>>>>> *#include <petscdm.h>*
>>>>>> *#include <petsc/private/dmpleximpl.h>*
>>>>>>
>>>>>> *#undef __FUNCT__*
>>>>>> *#define __FUNCT__ "main"*
>>>>>> *int main(int argc,char **argv)*
>>>>>> *{*
>>>>>> *  char                fineMeshFileName[2048];*
>>>>>> *  DM                  dm;*
>>>>>> *  MPI_Comm            comm;*
>>>>>> *  PetscBool           flg;*
>>>>>>
>>>>>> *  PetscErrorCode      ierr;*
>>>>>>
>>>>>> *  ierr = PetscInitialize(&argc,&argv,(char *)0,help);CHKERRQ(ierr);*
>>>>>> *  comm = PETSC_COMM_WORLD;*
>>>>>> *  ierr =
>>>>>> PetscOptionsGetString(NULL,NULL,"-file",fineMeshFileName,sizeof(fineMeshFileName),&flg);CHKERRQ(ierr);*
>>>>>> *  if(!flg){*
>>>>>> * SETERRQ(comm,PETSC_ERR_ARG_NULL,"please specify a fine mesh file
>>>>>> \n");*
>>>>>> *   }*
>>>>>> *  ierr = DMPlexCreateExodusFromFile( comm,fineMeshFileName,
>>>>>> PETSC_FALSE, &dm);CHKERRQ(ierr);*
>>>>>> *  ierr = DMDestroy(&dm);CHKERRQ(ierr);*
>>>>>> *  ierr = PetscFinalize();CHKERRQ(ierr);*
>>>>>> *}*
>>>>>>
>>>>>>
>>>>>> *LiviadeMacBook-Pro:partition livia$ ./DMPlexCreateExodusFromFile
>>>>>> -file Tri3.exo *
>>>>>> *[0]PETSC ERROR:
>>>>>> ------------------------------------------------------------------------*
>>>>>> *[0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation
>>>>>> Violation, probably memory access out of range*
>>>>>> *[0]PETSC ERROR: Try option -start_in_debugger or
>>>>>> -on_error_attach_debugger*
>>>>>> *[0]PETSC ERROR: or see
>>>>>> http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
>>>>>> <http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind>*
>>>>>> *[0]PETSC ERROR: or try http://valgrind.org <http://valgrind.org> on
>>>>>> GNU/linux and Apple Mac OS X to find memory corruption errors*
>>>>>> *[0]PETSC ERROR: likely location of problem given in stack below*
>>>>>> *[0]PETSC ERROR: ---------------------  Stack Frames
>>>>>> ------------------------------------*
>>>>>> *[0]PETSC ERROR: Note: The EXACT line numbers in the stack are not
>>>>>> available,*
>>>>>> *[0]PETSC ERROR:       INSTEAD the line number of the start of the
>>>>>> function*
>>>>>> *[0]PETSC ERROR:       is given.*
>>>>>> *[0]PETSC ERROR: [0] DMPlexCreateExodusFromFile line 38
>>>>>> /Users/livia/math/petsc/src/dm/impls/plex/plexexodusii.c*
>>>>>> *[0]PETSC ERROR: --------------------- Error Message
>>>>>> --------------------------------------------------------------*
>>>>>> *[0]PETSC ERROR: Signal received*
>>>>>> *[0]PETSC ERROR: See
>>>>>> http://www.mcs.anl.gov/petsc/documentation/faq.html
>>>>>> <http://www.mcs.anl.gov/petsc/documentation/faq.html> for trouble shooting.*
>>>>>> *[0]PETSC ERROR: Petsc Release Version 3.7.5, unknown *
>>>>>> *[0]PETSC ERROR: ./DMPlexCreateExodusFromFile on a
>>>>>> arch-darwin-cxx-debug named LiviadeMacBook-Pro.local by livia Sat Jan 21
>>>>>> 21:04:22 2017*
>>>>>> *[0]PETSC ERROR: Configure options --with-clanguage=cxx
>>>>>> --with-shared-libraries=1 --download-fblaslapack=1 --with-mpi=1
>>>>>> --download-parmetis=1 --download-metis=1 --download-netcdf=1
>>>>>> --download-exodusii=1 --download-hdf5=1 --with-debugging=yes
>>>>>> --with-c2html=0 --download-hypre=1 --with-64-bit-indices=1
>>>>>> --download-superlu_dist=1 PETSC_ARCH=arch-darwin-cxx-debug*
>>>>>> *[0]PETSC ERROR: #1 User provided function() line 0 in  unknown file*
>>>>>> *application called MPI_Abort(MPI_COMM_WORLD, 59) - process 0*
>>>>>> *[unset]: write_line error; fd=-1 buf=:cmd=abort exitcode=59*
>>>>>> *:*
>>>>>> *system msg for write_line failure : Bad file descriptor*
>>>>>>
>>>>>>
>>>>>> The log files of make and configuration are also attached.  If you
>>>>>> have any idea on this issue, please let me know!
>>>>>>
>>>>>> Fande Kong,
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> 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
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> 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
>>>
>>
>>
>
>
> --
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20170122/5bb13171/attachment-0001.html>


More information about the petsc-users mailing list