Bug #114752 hang bug in mysql NDB cluster
Submitted: 24 Apr 2024 2:54 Modified: 24 Apr 2024 11:32
Reporter: CunDi Fang Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:8.0.35-cluster MySQL Cluster Community S OS:Any (20.04)
Assigned to: MySQL Verification Team CPU Architecture:Any

[24 Apr 2024 2:54] CunDi Fang
Description:
Hello, I found a hang bug in 8.0.35-cluster version of MYSQL cluster. 
The detail is as follow.

OS version and name:
Ubuntu 22.04.3 LTS (Jammy Jellyfish)
Linux eb1f47b08982 6.5.11-8-pve #1 SMP PREEMPT_DYNAMIC PMX 6.5.11-8 (2024-01-30T12:27Z) x86_64 x86_64 x86_64 GNU/Linux

PoC:
'''
select  
  ref_0.column5 as c0, 
  ref_0.column5 as c1,
  89 as c2,
  ref_0.column7 as c3,
  ref_0.column7 as c4
from
  mytest90.test7 as ref_0
where (ref_0.column4 is not NULL)
  or (EXISTS (
    select
        ref_0.column1 as c0,
        ref_2.column1 as c1,
        case when (ref_0.column2 is NULL)
            or (ref_0.column4 is NULL) then ref_1.column4 else ref_1.column4 end
           as c2
      from
        mytest90.test7 as ref_1
          inner join mytest90.test5 as ref_2
          on ((false)
              or ((true)
                or (true)))
      where ((true)
          and (((ref_1.column2 is NULL)
              and ((false)
                and (true)))
            and (false)))
        or (EXISTS (
          select
              ref_3.column2 as c0
            from
              mytest90.test2 as ref_3
            where (EXISTS (
                select
                    ref_3.column66 as c0,
                    ref_4.column1 as c1,
                    ref_3.column2 as c2,
                    subq_0.c1 as c3,
                    (select rows_examined from sys.host_summary_by_statement_latency limit 1 offset 1)
                       as c4,
                    ref_1.column1 as c5
                  from
                    mytest90.test6 as ref_4,
                    lateral (select
                          ref_4.column1 as c0,
                          ref_5.column1 as c1
                        from
                          mytest90.test5 as ref_5
                        where ((true)
                            and ((ref_0.column7 is not NULL)
                              or ((true)
                                and (((ref_2.column1 is NULL)
                                    and (ref_5.column1 is NULL))
                                  or (false)))))
                          and (false)) as subq_0
                  where EXISTS (
                    select
                        (select INDEX_ID from information_schema.INNODB_CACHED_INDEXES limit 1 offset 1)
                           as c0,
                        (select current_max_alloc from sys.x$memory_by_host_by_current_bytes limit 1 offset 20)
                           as c1,
                        ref_6.column1 as c2,
                        ref_4.column1 as c3,
                        ref_3.column3 as c4
                      from
                        mytest90.test3 as ref_6
                      where ref_6.column6 is NULL)
                  limit 88))
              or ((true)
                and (EXISTS (
                  select
                      ref_1.column2 as c0,
                      ref_2.column2 as c1
                    from
                      mytest90.test9 as ref_7
                    where false
                    limit 132)))
            limit 129))
      limit 142))
limit 84;
'''

Architecture Information:
'''
[NDBD DEFAULT]
NoOfReplicas =2
DataMemory = 512M
IndexMemory = 64M

[NDB_MGMD]
NodeId=1
hostname =192.172.10.8
datadir =/var/lib/mysql-cluster

[NDBD]
NodeId =2
hostname =192.172.10.9
datadir =/usr/local/mysql-cluster/data
NodeGroup=0
[NDBD]
NodeId =3
hostname =192.172.10.10
datadir =/usr/local/mysql-cluster/data
NodeGroup=1
[NDBD]
NodeId =4
hostname =192.172.10.11
datadir =/usr/local/mysql-cluster/data
NodeGroup=0
[NDBD]
NodeId =5
hostname =192.172.10.12
datadir =/usr/local/mysql-cluster/data
NodeGroup=1

[mysqld]
NodeId =6
hostname =192.172.10.9
[mysqld]
NodeId =7
hostname =192.172.10.10
[mysqld]
NodeId =8
hostname =192.172.10.11
[mysqld]
NodeId =9
hostname =192.172.10.12
'''

Attempted and successfully reproduced!

How to repeat:
Simply execute that PoC to repeat it.

Suggested fix:
seems like a dead loop
[24 Apr 2024 11:32] MySQL Verification Team
Duplicate of Bug #114464