Skip to content

Arithmetic error in computation of page-addr in routing_filter_prefetch() causes debug-assert, or can lead to unending looping hang. #561

Closed

Description

@gapisback

This issue was discovered while developing a test-case to validate the fix for issue #458 that has already been integrated to /main.

If you run this newly (to-be-added) test case unit/splinterdb_stress_test test_issue_458_mini_destroy_unused_debug_assert, it will run into the following assertion. The test case is a single-threaded inserting 100M small key/value pairs.

Inserted 10 million KV-pairs, this batch: 6 s, 166666 rows/s, cumulative: 58 s, 172413 rows/s ...
Inserted 11 million KV-pairs, this batch: 6 s, 166666 rows/s, cumulative: 64 s, 171875 rows/s ...OS-pid=479158, OS-tid=479158, Thread-ID=0, 
Assertion failed at src/clockcache.c:2092:clockcache_get_internal(): "((addr % page_size) == 0)". addr=1034551297, page_size=4096

With release binary, you will get a hang thru this code-path:

clockcache_get_internal() -> clockcache_get_read() -> clockcache_try_get_read()

Activity

  1. self-assigned this
    on Apr 5, 2023
  2. added a commit that references this issue on Apr 5, 2023
  3. added a commit that references this issue on Apr 6, 2023
  4. added a commit that references this issue on Jul 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions