James E. King, III created THRIFT-4163:
------------------------------------------
Summary: The debian package / autoconf build environment is not
setting NDEBUG on production builds, leaving assertions active
Key: THRIFT-4163
URL: https://issues.apache.org/jira/browse/THRIFT-4163
Project: Thrift
Issue Type: Bug
Components: Build Process
Affects Versions: 0.10.0
Reporter: James E. King, III
Priority: Critical
In a project that uses thrift I was looking at a core and found an assertion
inside thrift triggered it. This was rather strange being in a release build
of thrift.
To understand if assertions are active in release builds, I modified
PlatformSocket.h and added this close to the top:
{noformat}
#ifdef NDEBUG
#error "NDEBUG IS SET: ASSERTIONS ARE IGNORED"
#else
#error "NDEBUG IS NOT SET: ASSERTIONS ARE ACTIVE"
#endif
{noformat}
Then I built the ubuntu dockerfile and started a debian package distribution
build:
{noformat}
# docker build -t thrift build/docker/ubuntu
# docker run -v $(pwd):/thrift/src -it thrift /bin/bash
# dpkg-buildpackage -d -tc 2>&1 | grep NDEBUG
./src/thrift/transport/PlatformSocket.h:25:2: error: #error "NDEBUG IS NOT SET:
ASSERTIONS ARE ACTIVE"
#error "NDEBUG IS NOT SET: ASSERTIONS ARE ACTIVE"
{noformat}
Assertions should not be active in release builds.
Assertions really shouldn't be used; exceptions are much better for C++.
That's covered in THRIFT-3978 however. To fix this issue, the autoconf system
needs to set NDEBUG for release builds.
I checked the cmake build environment and it does not suffer from this issue.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)