Skip to content

Bump certifi from 2019.11.28 to 2023.7.22 in /extra/libcbor/doc/source - #9

Closed
dependabot[bot] wants to merge 1 commit into
8.0from
dependabot/pip/extra/libcbor/doc/source/certifi-2023.7.22
Closed

Bump certifi from 2019.11.28 to 2023.7.22 in /extra/libcbor/doc/source#9
dependabot[bot] wants to merge 1 commit into
8.0from
dependabot/pip/extra/libcbor/doc/source/certifi-2023.7.22

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 25, 2023

Copy link
Copy Markdown

Bumps certifi from 2019.11.28 to 2023.7.22.

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps [certifi](https://github.com/certifi/python-certifi) from 2019.11.28 to 2023.7.22.
- [Commits](certifi/python-certifi@2019.11.28...2023.07.22)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Jul 25, 2023
@dependabot @github

dependabot Bot commented on behalf of github May 6, 2024

Copy link
Copy Markdown
Author

Superseded by #14.

@dependabot dependabot Bot closed this May 6, 2024
@dependabot
dependabot Bot deleted the dependabot/pip/extra/libcbor/doc/source/certifi-2023.7.22 branch May 6, 2024 15:15
shanth96 pushed a commit that referenced this pull request Jul 28, 2025
…tion fault

https://perconadev.atlassian.net/browse/PS-9719

Problem
-------
When changing binlog_transaction_dependency_tracking in high load
workload, MySQL can get a segmentation fault.

Analysis
--------
Address sanitizer runs exposed the heap-use-after-free.

READ of size 8 at 0x6030002c3298 thread T52
    #0 _M_hash_code()
    #1 _M_bucket_index()
    ..
    #7 std::unordered_map::insert()
    #8 Writeset_trx_dependency_tracker::get_dependency()
    #9 Transaction_dependency_tracker::get_dependency()
    #10 MYSQL_BIN_LOG::write_transaction()
    #11 binlog_cache_data::flush()
    #12 binlog_cache_mngr::flush()
    #13 MYSQL_BIN_LOG::flush_thread_caches()
    #14 MYSQL_BIN_LOG::process_flush_stage_queue()
    #15 MYSQL_BIN_LOG::ordered_commit()
    #16 MYSQL_BIN_LOG::commit()

freed by thread T49 here:
    #0 operator delete()
    ...
    #7 std::unordered_map::clear()
    #8 Writeset_trx_dependency_tracker::rotate(long)
    #9 Transaction_dependency_tracker::tracking_mode_changed()
    #10 update_binlog_transaction_dependency_tracking
    #11 sys_var::update()

- The Writeset_trx_dependency_tracker uses std::unordered_map for
  storing depdendency information.
- When a transaction is committing, the committing thread inserts the
  dependency information to this map in through get_dependency().
- When the tracking mode is changed, then the map is cleared by
  Writeset_trx_dependency_tracker::rotate(). Note that no lock/mutex is
  taken during the rotation.
- As the rotate() and get_dependency() operations can be concurrently
  called from different threads and there is no mutex protection to
  handle it, it can result in segmentation fault when the get_dependency()
  tries to insert to the already deleted map.

Solution
--------
Use std::shared_ptr with atomic load/store for safer dependency tracker map rotation.

- Replaced direct usage of of map with std::shared_ptr in the
  Writeset_trx_dependency_tracker class.
- Modified the implementation of rotate() to used std::atomic_load and
  std::atomic_store to enable thread-safe reads and rotations.

With the new solution the rotation happens in an atomic manner. So that
transactions calling get_dependency() always use the object returned by
shared_ptr. So, even if rotate() happens in parallel, the memory won't
be freed until all readers are done.
ben-thul pushed a commit that referenced this pull request Aug 19, 2026
…lability)

Debug-build CI runs of percona.acl_mdl_scalability sporadically crash
with:

    debug_sync.cc:943: void debug_sync_remove_action(...): Assertion
    `current_thd == nullptr || ds_control == current_thd->debug_sync_control'
    failed.
     #9  debug_sync_remove_action          sql/debug_sync.cc:943
     #10 debug_sync(THD*, ...)             sql/debug_sync.cc:1951
     #11 MDL_lock::visit_subgraph          sql/mdl.cc:3924
     #12 MDL_ticket::accept_visitor        sql/mdl.cc:4062
     #13 MDL_context::visit_subgraph       sql/mdl.cc:4086
     #14 MDL_lock::visit_subgraph          sql/mdl.cc:4027   <-- recursion
     ...
     #17 MDL_context::find_deadlock        sql/mdl.cc:4111

The "acl_mdl_dead_lock" sync point (added by PS-7143) fires inside
MDL_lock::visit_subgraph() on src_ctx->get_thd() - the THD owning the
*visited* waiting ticket. At recursion depth >= 2 of the wait-for-graph
walk that THD belongs to another connection. debug_sync() then executes
and removes an action on that other connection's debug_sync_control,
which has no locking: the whole facility assumes a sync point is only
ever hit by the THD's owner thread.

In the test, 500 sessions each arm "acl_mdl_dead_lock" on themselves and
then run deadlock detection concurrently over a shared wait-for graph,
so one detector can consume/remove another session's action while that
session (or a third detector) does the same - a genuine data race on
ds_active and the action array, caught by the debug assertion.

Fix: fire the sync point only when the visited ticket belongs to the
thread running the deadlock detection (the initial node of the walk,
src_ctx->get_thd() == current_thd). That depth-1 hit is the only one
the test's SIGNAL dead_locked / WAIT_FOR resume_wait_graph choreography
relies on; each session now executes its own action exactly once, and
no thread ever touches a foreign debug_sync_control. Non-debug-sync
builds are unaffected.

Verified: percona.acl_mdl_scalability passes 4/4 consecutive --big-test
runs (debug build) with clean server shutdown.

Note: the rpl.rpl_innodb_auto_increment mysqld.2.err logs attached to
the CI failure show a fully clean shutdown; the failed-shutdown verdict
belonged to the acl_mdl_scalability server crash above.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update Python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants