Can you provide any more details, such as the detailed_error string? The purpose of trx_t::assert_freed() is to catch cases where some data members of an object have not been cleared. We have a special allocator for trx_t objects in order to minimize overhead.
Marko Mäkelä
added a comment - Can you provide any more details, such as the detailed_error string? The purpose of trx_t::assert_freed() is to catch cases where some data members of an object have not been cleared. We have a special allocator for trx_t objects in order to minimize overhead.
Here is some information from an rr replay trace. The detailed_error was set in a transaction on which XA PREPARE was executed right before the server was shut down and the assertion failed:
10.5 1e5b0ff9778b16801d5afa08b6433070948f0910
#3 0x0000563a4047e7bb in fread (__stream=0x563a43c123f0, __n=255, __size=1, __ptr=0x563a43bf1dc8) at /usr/include/x86_64-linux-gnu/bits/stdio2.h:297
#4 os_file_read_string (file=0x563a43c123f0, str=0x563a43bf1dc8 "", size=size@entry=256) at /test/10.5_dbg/storage/innobase/os/os0file.cc:399
#5 0x0000563a40600fc1 in trx_set_detailed_error_from_file (trx=trx@entry=0x6c663bd251c0, file=<optimized out>) at /test/10.5_dbg/storage/innobase/trx/trx0trx.cc:99
#6 0x0000563a4050f272 in row_ins_set_detailed (trx=trx@entry=0x6c663bd251c0, foreign=foreign@entry=0x66517c023448) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:684
#7 0x0000563a4050ffd3 in row_ins_foreign_report_add_err (trx=trx@entry=0x6c663bd251c0, foreign=foreign@entry=0x66517c023448, rec=0x6651705b8070 "supremum", entry=entry@entry=0x66517c020b28)
at /test/10.5_dbg/storage/innobase/row/row0ins.cc:807
#8 0x0000563a40513868 in row_ins_check_foreign_constraint (check_ref=check_ref@entry=1, foreign=foreign@entry=0x66517c023448, table=table@entry=0x66517c022468, entry=entry@entry=0x66517c020b28,
thr=thr@entry=0x66517c077450) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:1807
#9 0x0000563a40514507 in row_ins_check_foreign_constraints (table=0x66517c022468, index=index@entry=0x66517c023b78, pk=pk@entry=true, entry=entry@entry=0x66517c020b28, thr=thr@entry=0x66517c077450)
at /test/10.5_dbg/storage/innobase/row/row0ins.cc:1981
#10 0x0000563a40514979 in row_ins_clust_index_entry (index=index@entry=0x66517c023b78, entry=entry@entry=0x66517c020b28, thr=thr@entry=0x66517c077450, n_ext=n_ext@entry=0)
at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3234
#11 0x0000563a40516c00 in row_ins_index_entry (thr=0x66517c077450, entry=0x66517c020b28, index=0x66517c023b78) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3404
#12 row_ins_index_entry_step (thr=0x66517c077450, node=<optimized out>) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3572
#13 row_ins (thr=0x66517c077450, node=<optimized out>) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3709
#14 row_ins_step (thr=thr@entry=0x66517c077450) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3852
#15 0x0000563a4053af22 in row_insert_for_mysql (mysql_rec=mysql_rec@entry=0x66517c0760e8 "\377\001", prebuilt=0x66517c076d38, ins_mode=ROW_INS_NORMAL) at /test/10.5_dbg/storage/innobase/row/row0mysql.cc:1394
#16 0x0000563a403a5037 in ha_innobase::write_row (this=0x66517c0764e0, record=0x66517c0760e8 "\377\001") at /test/10.5_dbg/storage/innobase/handler/ha_innodb.cc:7709
#17 0x0000563a3fffa503 in handler::ha_write_row (this=0x66517c0764e0, buf=0x66517c0760e8 "\377\001") at /test/10.5_dbg/sql/handler.cc:7348
#18 0x0000563a3fcd6ce0 in write_record (thd=thd@entry=0x66517c000d48, table=table@entry=0x66517c075cb8, info=info@entry=0x5c7a60e5bba0, sink=sink@entry=0x0) at /test/10.5_dbg/sql/sql_insert.cc:2197
Attempting backtrace. You can use the following information to find out
2024-05-21 9:02:31 0 [Warning] Found 1 prepared XA transactions
^ Found warnings in /dev/shm/10.11/mysql-test/var/log/mysqld.1.err
If I move the xa commit (or xa rollback; it does not matter which one we use) before the server restart, there will be no crash. Therefore, it would seem that we simply need to work around this assertion when freeing prepared transactions during shutdown:
In trx_t::commit_in_memory(), which would be invoked by xa commit or xa rollback, we already clear this field.
Marko Mäkelä
added a comment - - edited Here is some information from an rr replay trace. The detailed_error was set in a transaction on which XA PREPARE was executed right before the server was shut down and the assertion failed:
10.5 1e5b0ff9778b16801d5afa08b6433070948f0910
#3 0x0000563a4047e7bb in fread (__stream=0x563a43c123f0, __n=255, __size=1, __ptr=0x563a43bf1dc8) at /usr/include/x86_64-linux-gnu/bits/stdio2.h:297
#4 os_file_read_string (file=0x563a43c123f0, str=0x563a43bf1dc8 "", size=size@entry=256) at /test/10.5_dbg/storage/innobase/os/os0file.cc:399
#5 0x0000563a40600fc1 in trx_set_detailed_error_from_file (trx=trx@entry=0x6c663bd251c0, file=<optimized out>) at /test/10.5_dbg/storage/innobase/trx/trx0trx.cc:99
#6 0x0000563a4050f272 in row_ins_set_detailed (trx=trx@entry=0x6c663bd251c0, foreign=foreign@entry=0x66517c023448) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:684
#7 0x0000563a4050ffd3 in row_ins_foreign_report_add_err (trx=trx@entry=0x6c663bd251c0, foreign=foreign@entry=0x66517c023448, rec=0x6651705b8070 "supremum", entry=entry@entry=0x66517c020b28)
at /test/10.5_dbg/storage/innobase/row/row0ins.cc:807
#8 0x0000563a40513868 in row_ins_check_foreign_constraint (check_ref=check_ref@entry=1, foreign=foreign@entry=0x66517c023448, table=table@entry=0x66517c022468, entry=entry@entry=0x66517c020b28,
thr=thr@entry=0x66517c077450) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:1807
#9 0x0000563a40514507 in row_ins_check_foreign_constraints (table=0x66517c022468, index=index@entry=0x66517c023b78, pk=pk@entry=true, entry=entry@entry=0x66517c020b28, thr=thr@entry=0x66517c077450)
at /test/10.5_dbg/storage/innobase/row/row0ins.cc:1981
#10 0x0000563a40514979 in row_ins_clust_index_entry (index=index@entry=0x66517c023b78, entry=entry@entry=0x66517c020b28, thr=thr@entry=0x66517c077450, n_ext=n_ext@entry=0)
at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3234
#11 0x0000563a40516c00 in row_ins_index_entry (thr=0x66517c077450, entry=0x66517c020b28, index=0x66517c023b78) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3404
#12 row_ins_index_entry_step (thr=0x66517c077450, node=<optimized out>) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3572
#13 row_ins (thr=0x66517c077450, node=<optimized out>) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3709
#14 row_ins_step (thr=thr@entry=0x66517c077450) at /test/10.5_dbg/storage/innobase/row/row0ins.cc:3852
#15 0x0000563a4053af22 in row_insert_for_mysql (mysql_rec=mysql_rec@entry=0x66517c0760e8 "\377\001", prebuilt=0x66517c076d38, ins_mode=ROW_INS_NORMAL) at /test/10.5_dbg/storage/innobase/row/row0mysql.cc:1394
#16 0x0000563a403a5037 in ha_innobase::write_row (this=0x66517c0764e0, record=0x66517c0760e8 "\377\001") at /test/10.5_dbg/storage/innobase/handler/ha_innodb.cc:7709
#17 0x0000563a3fffa503 in handler::ha_write_row (this=0x66517c0764e0, buf=0x66517c0760e8 "\377\001") at /test/10.5_dbg/sql/handler.cc:7348
#18 0x0000563a3fcd6ce0 in write_record (thd=thd@entry=0x66517c000d48, table=table@entry=0x66517c075cb8, info=info@entry=0x5c7a60e5bba0, sink=sink@entry=0x0) at /test/10.5_dbg/sql/sql_insert.cc:2197
#19 0x0000563a3fce21e9 in mysql_insert (thd=thd@entry=0x66517c000d48, table_list=<optimized out>, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false, result=0x0)
at /test/10.5_dbg/sql/sql_insert.cc:1127
#20 0x0000563a3fd25727 in mysql_execute_command (thd=thd@entry=0x66517c000d48) at /test/10.5_dbg/sql/sql_parse.cc:4650
#21 0x0000563a3fd1052a in mysql_parse (thd=thd@entry=0x66517c000d48, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x5c7a60e5c2c0, is_com_multi=is_com_multi@entry=false,
is_next_command=is_next_command@entry=false) at /test/10.5_dbg/sql/sql_parse.cc:8203
#22 0x0000563a3fd1ece7 in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x66517c000d48, packet=packet@entry=0x66517c00aa19 "INSERT INTO t2 VALUES (1)", packet_length=packet_length@entry=25,
is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /test/10.5_dbg/sql/sql_class.h:1328
Based on this, I guessed the following test case:
--source include/have_innodb.inc
create table t0(a int primary key ) engine=innodb;
create table t1(a int primary key references t0(a)) engine=innodb;
xa start 'a' ;
insert into t0 set a=0;
--error ER_NO_REFERENCED_ROW_2
insert into t1 set a=1;
xa end 'a' ;
xa prepare 'a' ;
--source include/restart_mysqld.inc
xa commit 'a' ;
drop table t1, t0;
This will reproduce the problem:
10.11 f01e6503f4151a8d3d3f0495dab22c47ec794e67
mariadbd: /mariadb/10.11/storage/innobase/include/trx0trx.h:1110: void trx_t::assert_freed() const: Assertion `!*detailed_error' failed.
Attempting backtrace. You can use the following information to find out
2024-05-21 9:02:31 0 [Warning] Found 1 prepared XA transactions
^ Found warnings in /dev/shm/10.11/mysql-test/var/log/mysqld.1.err
If I move the xa commit (or xa rollback ; it does not matter which one we use) before the server restart, there will be no crash. Therefore, it would seem that we simply need to work around this assertion when freeing prepared transactions during shutdown:
diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc
index 606416e677e..7f1f26547dc 100644
--- a/storage/innobase/trx/trx0trx.cc
+++ b/storage/innobase/trx/trx0trx.cc
@@ -554,6 +554,7 @@ trx_free_at_shutdown(trx_t *trx)
trx->state = TRX_STATE_NOT_STARTED;
ut_ad(!UT_LIST_GET_LEN(trx->lock.trx_locks));
trx->id = 0;
+ ut_d(*trx->detailed_error = '\0');
trx->free();
}
In trx_t::commit_in_memory() , which would be invoked by xa commit or xa rollback , we already clear this field.
People
Marko Mäkelä
Ramesh Sivaraman
Votes:
0Vote for this issue
Watchers:
3Start watching this issue
Dates
Created:
Updated:
Resolved:
Git Integration
Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.
{"report":{"fcp":858.9000000953674,"ttfb":210.69999980926514,"pageVisibility":"visible","entityId":129208,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":1,"journeyId":"910fbdc3-79ba-4480-9b7e-864c53c94652","navigationType":0,"readyForUser":938,"redirectCount":0,"resourceLoadedEnd":576.9000000953674,"resourceLoadedStart":216.09999990463257,"resourceTiming":[{"duration":8.900000095367432,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":216.09999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":216.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":225,"responseStart":0,"secureConnectionStart":0},{"duration":8.799999713897705,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true&whisper-enabled=true","startTime":216.40000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":216.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":225.19999980926514,"responseStart":0,"secureConnectionStart":0},{"duration":233.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":216.59999990463257,"connectEnd":216.59999990463257,"connectStart":216.59999990463257,"domainLookupEnd":216.59999990463257,"domainLookupStart":216.59999990463257,"fetchStart":216.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":227.2999997138977,"responseEnd":450.5,"responseStart":250.90000009536743,"secureConnectionStart":216.59999990463257},{"duration":360,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true&whisper-enabled=true","startTime":216.90000009536743,"connectEnd":216.90000009536743,"connectStart":216.90000009536743,"domainLookupEnd":216.90000009536743,"domainLookupStart":216.90000009536743,"fetchStart":216.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":230.90000009536743,"responseEnd":576.9000000953674,"responseStart":252.69999980926514,"secureConnectionStart":216.90000009536743},{"duration":41.299999713897705,"initiatorType":"script","name":"https://jira.mariadb.org/s/a9324d6758d385eb45c462685ad88f1d-CDN/lu2cib/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":217,"connectEnd":217,"connectStart":217,"domainLookupEnd":217,"domainLookupStart":217,"fetchStart":217,"redirectEnd":0,"redirectStart":0,"requestStart":232.90000009536743,"responseEnd":258.2999997138977,"responseStart":255.5,"secureConnectionStart":217},{"duration":40.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":217.09999990463257,"connectEnd":217.09999990463257,"connectStart":217.09999990463257,"domainLookupEnd":217.09999990463257,"domainLookupStart":217.09999990463257,"fetchStart":217.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":232.2999997138977,"responseEnd":258,"responseStart":254.69999980926514,"secureConnectionStart":217.09999990463257},{"duration":41.200000286102295,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":217.2999997138977,"connectEnd":217.2999997138977,"connectStart":217.2999997138977,"domainLookupEnd":217.2999997138977,"domainLookupStart":217.2999997138977,"fetchStart":217.2999997138977,"redirectEnd":0,"redirectStart":0,"requestStart":233.59999990463257,"responseEnd":258.5,"responseStart":256.40000009536743,"secureConnectionStart":217.2999997138977},{"duration":11.400000095367432,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2cib/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":217.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":217.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":228.90000009536743,"responseStart":0,"secureConnectionStart":0},{"duration":51.59999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":217.69999980926514,"connectEnd":217.69999980926514,"connectStart":217.69999980926514,"domainLookupEnd":217.69999980926514,"domainLookupStart":217.69999980926514,"fetchStart":217.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":239.2999997138977,"responseEnd":269.2999997138977,"responseStart":265.2999997138977,"secureConnectionStart":217.69999980926514},{"duration":12.5,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":217.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":217.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":230.40000009536743,"responseStart":0,"secureConnectionStart":0},{"duration":51.59999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/s/5d5e8fe91fbc506585e83ea3b62ccc4b-CDN/lu2cib/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":218,"connectEnd":218,"connectStart":218,"domainLookupEnd":218,"domainLookupStart":218,"fetchStart":218,"redirectEnd":0,"redirectStart":0,"requestStart":239.40000009536743,"responseEnd":269.59999990463257,"responseStart":266.69999980926514,"secureConnectionStart":218},{"duration":304.09999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":224.69999980926514,"connectEnd":224.69999980926514,"connectStart":224.69999980926514,"domainLookupEnd":224.69999980926514,"domainLookupStart":224.69999980926514,"fetchStart":224.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":254.19999980926514,"responseEnd":528.7999997138977,"responseStart":523.1999998092651,"secureConnectionStart":224.69999980926514},{"duration":287.40000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":242,"connectEnd":242,"connectStart":242,"domainLookupEnd":242,"domainLookupStart":242,"fetchStart":242,"redirectEnd":0,"redirectStart":0,"requestStart":258.59999990463257,"responseEnd":529.4000000953674,"responseStart":523.7999997138977,"secureConnectionStart":242},{"duration":109.80000019073486,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":602.5999999046326,"connectEnd":602.5999999046326,"connectStart":602.5999999046326,"domainLookupEnd":602.5999999046326,"domainLookupStart":602.5999999046326,"fetchStart":602.5999999046326,"redirectEnd":0,"redirectStart":0,"requestStart":678.1999998092651,"responseEnd":712.4000000953674,"responseStart":711.5,"secureConnectionStart":602.5999999046326},{"duration":156.80000019073486,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":812.1999998092651,"connectEnd":812.1999998092651,"connectStart":812.1999998092651,"domainLookupEnd":812.1999998092651,"domainLookupStart":812.1999998092651,"fetchStart":812.1999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":936.4000000953674,"responseEnd":969,"responseStart":967.9000000953674,"secureConnectionStart":812.1999998092651},{"duration":163.80000019073486,"initiatorType":"script","name":"https://www.google-analytics.com/analytics.js","startTime":850.6999998092651,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":850.6999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1014.5,"responseStart":0,"secureConnectionStart":0}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":14,"responseStart":211,"responseEnd":242,"domLoading":214,"domInteractive":1055,"domContentLoadedEventStart":1055,"domContentLoadedEventEnd":1110,"domComplete":1459,"loadEventStart":1459,"loadEventEnd":1459,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1017.5999999046326},{"name":"bigPipe.sidebar-id.end","time":1018.5999999046326},{"name":"bigPipe.activity-panel-pipe-id.start","time":1018.6999998092651},{"name":"bigPipe.activity-panel-pipe-id.end","time":1021.9000000953674},{"name":"activityTabFullyLoaded","time":1125}],"measures":[],"correlationId":"c72bb2ff6f0f78","effectiveType":"4g","downlink":9.8,"rtt":0,"serverDuration":110,"dbReadsTimeInMs":11,"dbConnsTimeInMs":20,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
Can you provide any more details, such as the detailed_error string? The purpose of trx_t::assert_freed() is to catch cases where some data members of an object have not been cleared. We have a special allocator for trx_t objects in order to minimize overhead.