[
https://issues.apache.org/jira/browse/THRIFT-4163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15954048#comment-15954048
]
James E. King, III commented on THRIFT-4163:
--------------------------------------------
I tried doing that but it got a bit messy. I'm thinking instead I will just
add -DNDEBUG to the flags for the debian build. I'd like to hear from others
about this however... do you think asserts should be left on in release
production builds? Eventually we'll remove all the asserts and use exceptions
but until then...
> 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
> Assignee: 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)