Skip Menu |

This queue is for tickets about the Panda-XS CPAN distribution.

Report information
The Basics
Id: 124064
Status: resolved
Priority: 0/
Queue: Panda-XS

People
Owner: Nobody in particular
Requestors: HMBRAND [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: 2.1.7
Fixed in: (no value)



Subject: build fails with gcc-7.2.1
c++ -c -Isrc -I/pro/lib/perl5/site_perl/5.26.0/x86_64-linux-thread-multi-ld/CPP/panda/lib.x/i -I/pro/lib/perl5/site_perl/5.26.0/x86_64-linux-thread-multi-ld/CPP/catch/test.x/i -D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wextra -o XS.o -std=c++14 -g0 -O2 -DVERSION=\"2.1.8\" -DXS_VERSION=\"2.1.8\" -fPIC "-I/pro/lib/perl5/5.26.0/x86_64-linux-thread-multi-ld/CORE" XS.c In file included from XS.xs:2:0: src/xs/XSCallbackDispatcher.h: In member function ‘void xs::{anonymous}::ArgsConverter<Args>::operator()(Args ...)’: src/xs/XSCallbackDispatcher.h:50:71: error: cannot convert ‘cv*’ to ‘PerlInterpreter* {aka interpreter*}’ for argument ‘1’ to ‘void xs::call_sub_void(PerlInterpreter*, CV*, SV**, I32)’ xs::call_sub_void(cv.get<CV>(), sv_args.data(), sv_args.size()); ^ make: *** [Makefile:363: XS.o] Error 1 Adding two casts like void operator ()(Args... args) { std::vector<SV*> sv_args; push(sv_args, args...); xs::call_sub_void((PerlInterpreter *)cv.get<CV>(), (CV *)sv_args.data(), sv_args.size()); } All tests successful. Files=22, Tests=777, 1 wallclock secs ( 0.07 usr 0.03 sys + 1.08 cusr 0.15 csys = 1.33 CPU) Result: PASS will PASS
On Fri Jan 12 10:54:55 2018, HMBRAND wrote: Show quoted text
> c++ -c -Isrc -I/pro/lib/perl5/site_perl/5.26.0/x86_64-linux-thread- > multi-ld/CPP/panda/lib.x/i -I/pro/lib/perl5/site_perl/5.26.0/x86_64- > linux-thread-multi-ld/CPP/catch/test.x/i -D_REENTRANT -D_GNU_SOURCE > -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong > -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall > -Wextra -o XS.o -std=c++14 -g0 -O2 -DVERSION=\"2.1.8\" > -DXS_VERSION=\"2.1.8\" -fPIC "-I/pro/lib/perl5/5.26.0/x86_64-linux- > thread-multi-ld/CORE" XS.c > In file included from XS.xs:2:0: > src/xs/XSCallbackDispatcher.h: In member function ‘void > xs::{anonymous}::ArgsConverter<Args>::operator()(Args ...)’: > src/xs/XSCallbackDispatcher.h:50:71: error: cannot convert ‘cv*’ to > ‘PerlInterpreter* {aka interpreter*}’ for argument ‘1’ to ‘void > xs::call_sub_void(PerlInterpreter*, CV*, SV**, I32)’ > xs::call_sub_void(cv.get<CV>(), sv_args.data(), > sv_args.size()); > ^ > make: *** [Makefile:363: XS.o] Error 1 > > Adding two casts like > > void operator ()(Args... args) { > std::vector<SV*> sv_args; > push(sv_args, args...); > xs::call_sub_void((PerlInterpreter *)cv.get<CV>(), (CV > *)sv_args.data(), sv_args.size()); > }
Which of course is VERY wrong. The cause is that it misses pTHX_ and friends for threaded perl builds So these casts are very wrong. Even weirder that now all tests pass Show quoted text
> All tests successful. > Files=22, Tests=777, 1 wallclock secs ( 0.07 usr 0.03 sys + 1.08 > cusr 0.15 csys = 1.33 CPU) > Result: PASS > > will PASS
fixed in 2.1.9