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: Chris Moller
Subject: Re: [Bug-apl] Possible bug in APL
Date: Mon, 25 Jun 2018 12:14:26 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

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




reply via email to

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