-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Setting counting_illegal_callback may hide failing tests #1167
Comments
Or make the ecount global. 🤷 I guess that's good enough for test code. |
We could write an This would also get rid of all the ecount-accounting code, which is quite a PITA to maintain and sometimes results in huge diffs. |
@apoelstra That would be so much more readable! |
39e8f0e refactor: Separate run_context_tests into static vs proper contexts (Tim Ruffing) a4a0937 tests: Clean up and improve run_context_tests() further (Tim Ruffing) fc90bb5 refactor: Tidy up main() (Tim Ruffing) f32a36f tests: Don't use global context for context tests (Tim Ruffing) ce4f936 tests: Tidy run_context_tests() by extracting functions (Tim Ruffing) 18e0db3 tests: Don't recreate global context in scratch space test (Tim Ruffing) b198061 tests: Use global copy of secp256k1_context_static instead of clone (Tim Ruffing) Pull request description: This is an improved version of some of the tidying/refactoring in #1170. I think it's enough to deserve a separate PR. Once this is merged, I'll get back to the actual goal of #1170 (namely, forbidding cloning and randomizing static contexts.) This PR is a general clean up of the context tests. A notable change is that this avoids a code smell where `run_context_tests()` would use the global `ctx` variable like a local one (i.e., create a context in it and destroy it afterwards). After this PR, the global `ctx` is properly initialized for all the other tests, and they can decide whether they want to use it or not. Same for a global `sttc`, which is a memcpy of the static context (we need a writable copy in order to be able to set callbacks). Note that this touches code which is also affected by #1167 but I refrained from trying to solve this issue. The goal of this PR is simply not to worsen the situation w.r.t. #1167. We should really introduce a macro to solve #1167 but that's another PR. ACKs for top commit: sipa: utACK 39e8f0e apoelstra: ACK 39e8f0e Tree-SHA512: a22471758111061a062b126a52a0de24a1a311d1a0332a4ef006882379a4f3f2b00e53089e3c374bf47c4051bb10bbc6a9fdbcf6d0cd4eca15b5703590395fba
We have Lines 55 to 72 in c545fdc
The "only" thing left to do is to use these everywhere (and maybe introduce a similar macro for the error callback). |
The following code snippet very roughly resembles what happens in the libsecp test harness and illustrates the issue:
The code is fine, until one day
some_function(ctx)
results in the illegal callback being called.Then we'd want the test to fail but instead what happens is that some stack region formerly known as
ecount
is modified, which does not necessarily result in a crash.One solution would be to never add the
counting_illegal_callback
to the global context and instead create a local context for counting.The text was updated successfully, but these errors were encountered: