[CP2K:7489] Buffer overflow in cp2k_shell.popt
Dominik 'Rathann' Mierzejewski
rat... at gmail.com
Wed Mar 9 12:42:41 UTC 2016
Eric,
On Wednesday, 09 March 2016 at 13:11, Eric Hermes wrote:
> Dominik,
>
> On Wednesday, March 9, 2016 at 2:55:05 AM UTC-6, Dominik Mierzejewski wrote:
> >
> > Hi, Eric.
> >
> > On Tuesday, 08 March 2016 at 22:48, Eric Hermes wrote:
> > [...]
> > > This is why I am trying to build the cp2k_shell binaries in the first
> > > place. Unfortunately, I cannot get cp2k_shell to run at all, let alone
> > > within the framework of ASE. The problem is that the binary produces a
> > > buffer overflow when run by itself with no arguments.
> >
> > Please try compiling with debugging information included (with gcc it's
> > enough to add -g to compiler flags, but I don't know the equivalent
> > for Intel compiler). Then, run the binary under gdb and post the output
> > of 'where' command once it crashes.
>
> Slight correction to my previous post: the compiled executable does not
> result in a buffer overflow when it is run by itself, but only when it is
> run with mpirun. I have tried compiling CP2K with both mvapich2-2.2b and
> openmpi-1.10.2, and the buffer overflow happens for both of these MPI
> implementations. Since it only crashes when run with mpirun, and I do not
> know how to debug an MPI process with gdb (since it crashes immediately, I
> can't exactly attach gdb to the process once it's running), I don't think I
> can easily debug the process with gdb.
You can run mpirun under gdb:
$ gdb mpirun
...
(gdb) run insert_the_rest_of_the_commandline_here
> That said, I did try compiling CP2K with the Intel compiler debugging
> options enabled. What this showed was that any attempt to print or write to
> the screen was what was causing the buffer overflow. Specifically, it
> points to line 185 in cp2k_shell.f90, which after preprocessing looks like
> this:
>
> DO
> IF (para_env%mepos==para_env%source) THEN
> WRITE (sout,'("* READY")')
> CALL m_flush(sout)
> END IF
>
> Line 185 is the one that contains the WRITE statement. I attempted
> debugging this issue by placing a simple 'print *, "Hello"' line above this
> on line 183, and after recompiling cp2k_shell.o and relinking
> cp2k_shell.popt, the resulting buffer overflow occurs at line 183 instead,
> with "Hello" not having been printed to the screen. I also tried explicitly
> writing to unit 6 with 'write (6, *) "Hello"', and this results in the same
> error.
Interesting. I've never seen this, but I only build with gcc.
Regards,
Dominik
--
Fedora http://fedoraproject.org/wiki/User:Rathann
RPMFusion http://rpmfusion.org
"Faith manages."
-- Delenn to Lennier in Babylon 5:"Confessions and Lamentations"
More information about the CP2K-user
mailing list