Details
- 
    Bug 
- 
    Status: Closed (View Workflow)
- 
    Major 
- 
    Resolution: Duplicate
- 
    10.5.12
- 
    None
Description
Was testing MaxScale version 6 with 10.5.12 and observed the following crash in both 10.5.12 and 10.5.12
| 210813  9:03:30 [ERROR] mysqld got signal 11 ; | 
| This could be because you hit a bug. It is also possible that this binary | 
| or one of the libraries it was linked against is corrupt, improperly built, | 
| or misconfigured. This error can also be caused by malfunctioning hardware. | 
| To report this bug, see https://mariadb.com/kb/en/reporting-bugs | 
| We will try our best to scrape up some info that will hopefully help | 
| diagnose the problem, but since we have already crashed,  | 
| something is definitely wrong and this may fail. | 
| Server version: 10.5.12-MariaDB-1:10.5.12+maria~focal-log | 
| key_buffer_size=134217728 | 
| read_buffer_size=131072 | 
| max_used_connections=11 | 
| max_threads=153 | 
| thread_count=14 | 
| It is possible that mysqld could use up to  | 
| key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 467871 K  bytes of memory | 
| Hope that's ok; if not, decrease some variables in the equation. | 
| Thread pointer: 0x7f29e8000c58 | 
| Attempting backtrace. You can use the following information to find out | 
| where mysqld died. If you see no messages after this, something went | 
| terribly wrong... | 
| stack_bottom = 0x7f2a41491d58 thread_stack 0x49000 | 
| mysqld(my_print_stacktrace+0x32)[0x55b96c8b73a2] | 
| Printing to addr2line failed | 
| mysqld(handle_fatal_signal+0x485)[0x55b96c30a0b5] | 
| /lib/x86_64-linux-gnu/libpthread.so.0(+0x153c0)[0x7f2a595623c0] | 
| mysqld(my_string_metadata_get+0x1e)[0x55b96c90721e] | 
| mysqld(_ZN10Item_param17convert_str_valueEP3THD+0xdf)[0x55b96c32f26f] | 
| mysqld(+0x779347)[0x55b96c10b347] | 
| mysqld(_ZN18Prepared_statement14set_parametersEP6StringPhS2_+0x6f)[0x55b96c10f96f] | 
| mysqld(_ZN18Prepared_statement12execute_loopEP6StringbPhS2_+0x3a)[0x55b96c110a7a] | 
| mysqld(+0x77f735)[0x55b96c111735] | 
| mysqld(_Z19mysqld_stmt_executeP3THDPcj+0x30)[0x55b96c111950] | 
| mysqld(_Z16dispatch_command19enum_server_commandP3THDPcjbb+0x1acf)[0x55b96c0f847f] | 
| mysqld(_Z10do_commandP3THD+0x11c)[0x55b96c0fa30c] | 
| mysqld(_Z24do_handle_one_connectionP7CONNECTb+0x421)[0x55b96c200a61] | 
| mysqld(handle_one_connection+0x5d)[0x55b96c200edd] | 
| mysqld(+0xbd0a36)[0x55b96c562a36] | 
| /lib/x86_64-linux-gnu/libpthread.so.0(+0x9609)[0x7f2a59556609] | 
| /lib/x86_64-linux-gnu/libc.so.6(clone+0x43)[0x7f2a59144293] | 
| Trying to get some variables. | 
| Some pointers may be invalid and cause the dump to abort. | 
| Query (0x0): (null) | 
| Connection ID (thread ID): 11 | 
| Status: NOT_KILLED | 
| Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on,not_null_range_scan=off | 
| The manual page at https://mariadb.com/kb/en/how-to-produce-a-full-stack-trace-for-mysqld/ contains | 
| information that should help you find out what is causing the crash. | 
| We think the query pointer is invalid, but we will try to print it anyway.  | 
| Query:  | 
| Writing a core file... | 
| Working directory at /var/lib/mysql | 
| Resource Limits: | 
| Limit                     Soft Limit           Hard Limit           Units      | 
| Max cpu time              unlimited            unlimited            seconds    | 
| Max file size             unlimited            unlimited            bytes      | 
| Max data size             unlimited            unlimited            bytes      | 
| Max stack size            8388608              unlimited            bytes      | 
| Max core file size        unlimited            unlimited            bytes      | 
| Max resident set          unlimited            unlimited            bytes      | 
| Max processes             unlimited            unlimited            processes  | 
| Max open files            1024                 1024                 files      | 
| Max locked memory         65536                65536                bytes      | 
| Max address space         unlimited            unlimited            bytes      | 
| Max file locks            unlimited            unlimited            locks      | 
| Max pending signals       127158               127158               signals    | 
| Max msgqueue size         819200               819200               bytes      | 
| Max nice priority         0                    0                     | 
| Max realtime priority     0                    0                     | 
| Max realtime timeout      unlimited            unlimited            us         | 
| Core pattern: |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
 | 
The sysbench command I ran:
| sysbench --time=0 --threads=5 --mysql-host=127.0.0.1 --mysql-port=4006 --mysql-user=maxuser --mysql-password=maxpwd --mysql-db=test --db-ps-mode=auto --skip_trx=on ./oltp_read_only.lua run
 | 
The MaxScale configuration:
| [maxscale] | 
| threads=auto | 
|  | 
| [server1] | 
| type=server | 
| address=127.0.0.1 | 
| port=3000 | 
| protocol=MariaDBBackend | 
| persistpoolmax=20 | 
| persistmaxtime=300s | 
|  | 
| [server2] | 
| type=server | 
| address=127.0.0.1 | 
| port=3001 | 
| protocol=MariaDBBackend | 
| persistpoolmax=20 | 
| persistmaxtime=300s | 
|  | 
| [server3] | 
| type=server | 
| address=127.0.0.1 | 
| port=3002 | 
| protocol=MariaDBBackend | 
| persistpoolmax=20 | 
| persistmaxtime=300s | 
|  | 
| [server4] | 
| type=server | 
| address=127.0.0.1 | 
| port=3003 | 
| protocol=MariaDBBackend | 
| persistpoolmax=20 | 
| persistmaxtime=300s | 
|  | 
| [MariaDB-Monitor] | 
| type=monitor | 
| module=mariadbmon | 
| servers=server1,server2,server3,server4 | 
| user=maxuser | 
| password=maxpwd | 
| monitor_interval=5000 | 
|  | 
| [RW-Split-Router] | 
| type=service | 
| router=readwritesplit | 
| servers=server1,server2,server3,server4 | 
| user=maxuser | 
| password=maxpwd | 
| idle_session_pool_time=0s | 
|  | 
| [RW-Split-Listener] | 
| type=listener | 
| service=RW-Split-Router | 
| protocol=MariaDBClient | 
| port=4006
 | 
I was using a modified version of MaxScale with the following patch applied to commit d9f14315a0ba075c61d7fe9fa4e403534517787c:
| diff --git a/server/core/routingworker.cc b/server/core/routingworker.cc | 
| index 0d08600e4..23a6e78b3 100644 | 
| --- a/server/core/routingworker.cc | 
| +++ b/server/core/routingworker.cc | 
| @@ -465,7 +465,7 @@ void RoutingWorker::process_timeouts() | 
|                  auto idle = MXS_CLOCK_TO_SEC(now - pClient->last_read()); | 
|                  pSes->tick(idle); | 
|   | 
| -                if (pooling_time >= 0 && idle > pooling_time && pSes->can_pool_backends()) | 
| +                if (pooling_time >= 0 && idle >= pooling_time && pSes->can_pool_backends()) | 
|                  { | 
|                      for (auto& backend : pSes->backend_connections()) | 
| { | 
Attachments
Issue Links
- duplicates
- 
                    MDEV-19811 Crash with prepared statement -         
- Open
 
-