-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Derecho clients must use same CMake target mode (Debug vs Release) as Derecho #138
Comments
We should fix this: that is, we should ensure that the client's choice of debug or release mode for their own code does not need to align with their choice of debug or release mode for derecho's code. We are still working out how exactly to make that happen. One early idea would be to stop using NDEBUG within Derecho itself, and add a Derecho-specific DEBUG flag in its place. There would be a very large number of places where we need to make this change. In particular, the mutils libraries would need to make a corresponding change. |
yes, I can't imagine how many things will go wrong if we mixed Debug and Release. |
Obviously, mixing application in Debug mode and library in Release mode happens everywhere in software development (Imagine debugging a program.). Libraries like glibc, boost, allows application development with debugging. I think the issue here is that the behavior of derecho code is different in debug mode and release mode. If we align the behaviors in both mode, it should be fine. |
I would suggest that Matthew add a new debug flag specifically for debugging his serialization messages. Then we avoid this whole issue, because the message format in Derecho would be identical in debug and release mode, and Matthew could simply enable that flag if he is debugging new serialization logic, but this isn't something end-users would normally be doing. |
A more global version of that is what we're going to do --- replace all the
debug flags with a special new one, and then go through and re-enable the
ones that look useful for a user to have control over.
…On Thu, Sep 26, 2019 at 3:05 PM Ken Birman ***@***.***> wrote:
I would suggest that Matthew add a new debug flag specifically for
debugging his serialization messages. Then we avoid this whole issue,
because the message format in Derecho would be identical in debug and
release mode, and Matthew could simply enable that flag if he is debugging
new serialization logic, but this isn't something end-users would normally
be doing.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#138?email_source=notifications&email_token=AAB4IINAQJBHIGGX24HZTDDQLUBVXA5CNFSM4I2Q7T7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7WUK2I#issuecomment-535643497>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAB4IIJ5GXVIQIHPXNA7XBTQLUBVXANCNFSM4I2Q7T7A>
.
|
Has this been fixed yet? Commit 4c4b577 decoupled the serialization debug code from the standard NDEBUG macro, and it looks like our current version of CMakeLists.txt doesn't rely on the NDEBUG flag (it uses DERECHO_DEBUG and NOLOG instead). |
As of last summer this has been accomplished. But I don't know if the code
added sense then has adhered to it.
…On Sat, Jul 4, 2020, 3:15 PM Edward Tremel ***@***.***> wrote:
Has this been fixed yet? Commit 4c4b577
<4c4b577>
decoupled the serialization debug code from the standard NDEBUG macro, and
it looks like our current version of CMakeLists.txt doesn't rely on the
NDEBUG flag (it uses DERECHO_DEBUG and NOLOG instead).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#138 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAB4IIOPI5CJOXKY26MDU6LRZ55UBANCNFSM4I2Q7T7A>
.
|
Weijia's mysterious serialization bug was caused by building an application in debug mode, and linking it against a release-mode Derecho. Because so much of Derecho is implemented in headers, this meant that some Derecho functions were compiled in Debug mode alongside Weijia's client code, but other Derecho functions were compiled in release mode inside the Derecho installation.
The text was updated successfully, but these errors were encountered: