bug-apl
[Top][All Lists]
Advanced

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

Re: [Bug-apl] Possible bug in APL


From: Juergen Sauermann
Subject: Re: [Bug-apl] Possible bug in APL
Date: Tue, 26 Jun 2018 19:43:41 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

Hi Chris,

the svn E155007 happens if you unpack a GNU APL tar file (as opposed to
checking out GNU APL from SVN, which is the proposed method). See
https://savannah.gnu.org/svn/?group=apl.

The other error was fixed already in SVN version 1052 (see
http://svn.savannah.gnu.org/viewvc/apl/trunk/src/Svar_record.hh?r1=1051&r2=1052
for details.

Fro the first error message I can see that you have SVN installed. So checking out
the latest version of GNU APL is simply runnung this command:

svn co http://svn.savannah.gnu.org/svn/apl

That should give you the latest SVN version (currently 1053) of GNU APL where
both errors above should disappear.

File apl-1.7.tar.gz (whereever you found that) is too old to compile under
the most recent gcc versions.

/// Jürgen


On 06/25/2018 06:14 PM, Chris Moller wrote:

I tried building apl-1.7.tar.gz, but running ./configure gave me:

svn: E155007: '/home/moller/Downloads/apl-1.7/src/Archive.cc' is not a working copy

and then build gives me:

g++ -DHAVE_CONFIG_H -I. -I..    -Werror -Wall -I sql    -rdynamic -g -O2 -MT apl-Avec.o -MD -MP -MF .deps/apl-Avec.Tpo -c -o apl-Avec.o `test -f 'Avec.cc' || echo './'`Avec.cc
In file included from Svar_DB.hh:32,
                 from Symbol.hh:30,
                 from SystemVariable.hh:26,
                 from Quad_RL.hh:24,
                 from Workspace.hh:31,
                 from Assert.cc:28:
Svar_record.hh: In member function 'void Svar_record::clear()':
Svar_record.hh:183:50: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct Svar_record'; use assignment or value-initialization instead [-Werror=class-memaccess]
    void clear()   { memset(this, 0, sizeof(*this)); }
                                                  ^
Svar_record.hh:174:8: note: 'struct Svar_record' declared here
 struct Svar_record
        ^~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[3]: *** [Makefile:1838: apl-Assert.o] Error 1
make[3]: *** Waiting for unfinished jobs....
In file included from Svar_DB.hh:32,
                 from Symbol.hh:30,
                 from UserFunction.hh:29,
                 from Macro.hh:24,
                 from main.cc:38:
Svar_record.hh: In member function 'void Svar_record::clear()':
Svar_record.hh:183:50: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct Svar_record'; use assignment or value-initialization instead [-Werror=class-memaccess]
    void clear()   { memset(this, 0, sizeof(*this)); }
                                                  ^
Svar_record.hh:174:8: note: 'struct Svar_record' declared here
 struct Svar_record
        ^~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[3]: *** [Makefile:1796: apl-main.o] Error 1
mv -f .deps/apl-Avec.Tpo .deps/apl-Avec.Po
In file included from Svar_DB.hh:32,
                 from Symbol.hh:30,
                 from SystemVariable.hh:26,
                 from Quad_RL.hh:24,
                 from Workspace.hh:31,
                 from Archive.hh:28,
                 from Archive.cc:29:
Svar_record.hh: In member function 'void Svar_record::clear()':
Svar_record.hh:183:50: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct Svar_record'; use assignment or value-initialization instead [-Werror=class-memaccess]
    void clear()   { memset(this, 0, sizeof(*this)); }
                                                  ^
Svar_record.hh:174:8: note: 'struct Svar_record' declared here
 struct Svar_record
        ^~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[3]: *** [Makefile:1810: apl-Archive.o] Error 1
make[3]: Leaving directory '/home/moller/Downloads/apl-1.7/src'
make[2]: *** [Makefile:3174: all-recursive] Error 1
make[2]: Leaving directory '/home/moller/Downloads/apl-1.7/src'
make[1]: *** [Makefile:509: all-recursive] Error 1
make[1]: Leaving directory '/home/moller/Downloads/apl-1.7'
make: *** [Makefile:396: all] Error 2


All this on Fedora release 28 (Twenty Eight)

[0] ~/Downloads/apl-1.7 >g++ --version                                                                                                                                                      12:08:58
g++ (GCC) 8.1.1 20180502 (Red Hat 8.1.1-1)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[0] ~/Downloads/apl-1.7 >uname -a                                                                                                                                                           12:09:42
Linux hpbox.mollernet.net 4.16.13-300.fc28.x86_64 #1 SMP Wed May 30 14:31:00 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[0] ~/Downloads/apl-1.7 >


I'm no C++ guy, but I was going to look more closely into this when I got time.  I've had other recent problems with GCC 8.1, so I tend to suspect that, but that's just a guess.


Chris



On 25/06/18 11:54, Juergen Sauermann wrote:
Hi Chris,

even after a close look at the GNU APL code I can't see anything wrong with how realpath() is being called.

To me it looks more like a bug in glibc 2.3, although the valgrind message suggests that this bug causes no harm
(a memory area is copied to itself, which is an overlap but one that causes no harm).

It also looks to me as if you are using an older GNU APL version because I cannot
find the line in Libpath.cc that you quote below in the current GNU APL code.

Thank you nevertheless for reporting this.

/// Jürgen



On 06/24/2018 02:29 PM, Chris Moller wrote:

Doing some other stuff involving libapl.so, I was running valgrind against my own code when this popped up:


==14122== Source and destination overlap in mempcpy(0x778a9e1, 0x778a9e1, 4)
==14122==    at 0x4C34FF0: mempcpy (vg_replace_strmem.c:1524)
==14122==    by 0x7E06634: realpath@@GLIBC_2.3 (in /usr/lib64/libc-2.27.so)
==14122==    by 0x7441092: LibPaths::search_APL_lib_root() (LibPaths.cc:186)
==14122==    by 0x7441173: LibPaths::init(char const*, bool) (LibPaths.cc:53)
==14122==    by 0x7422B96: init_1(char const*, bool) (Common.cc:77)
==14122==    by 0x7509C09: init_libapl (libapl.cc:435)
==14122==    by 0x4048F9: main (gapl.c:685)


The line in LibPaths.cc is:

unused = realpath(APL_lib_root, APL_lib_root);

which could obviously cause a collision. 

I don't know if this is a real problem or not, but I thought I ought to  mention it to someone.

Chris Moller




Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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