Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-15374

Server hangs and aborts with long semaphore wait or assertion `len < ((ulint) srv_page_size)' fails in trx_undo_rec_copy upon ROLLBACK on temporary table

    Details

      Description

      The RQG test provided below represents simple non-concurrent one-thread flow consisting of updates on temporary InnoDB tables, followed by rollbacks. Very soon (for me it happens within the first minute of the test) one of ROLLBACKs causes an assertion failure on 10.3 or hangs on 10.2. For 10.3, even one table is enough, 10.2 seems to need two tables, so the grammar has two tables.
      10.1 does not hang or crash.

      10.3 fa68b88b5d415

      mysqld: /data/src/10.3/storage/innobase/include/trx0rec.ic:68: trx_undo_rec_t* trx_undo_rec_copy(const trx_undo_rec_t*, mem_heap_t*): Assertion `len < ((ulint) srv_page_size)' failed.
      180419  0:27:25 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007f3211effee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
      #8  0x000055bb77d5623e in trx_undo_rec_copy (undo_rec=0x7f31f072f041 "", heap=0x7f31a04e0e90) at /data/src/10.3/storage/innobase/include/trx0rec.ic:68
      #9  0x000055bb77d5d45b in trx_undo_get_undo_rec_low (roll_ptr=35184372105949249, is_temp=true, heap=0x7f31a04e0e90) at /data/src/10.3/storage/innobase/trx/trx0rec.cc:2175
      #10 0x000055bb77d5d54b in trx_undo_get_undo_rec (roll_ptr=35184372105949249, is_temp=true, heap=0x7f31a04e0e90, trx_id=5480, name=..., undo_rec=0x7f3210185be0) at /data/src/10.3/storage/innobase/trx/trx0rec.cc:2211
      #11 0x000055bb77d5d82c in trx_undo_prev_version_build (index_rec=0x7f31f052809b "", index_mtr=0x7f3210186520, rec=0x7f31a04e0b8e "", index=0x7f31a02a4f78, offsets=0x7f31a04e0bf0, heap=0x7f31a04e0e90, old_vers=0x7f3210185cd0, v_heap=0x0, vrow=0x0, v_status=0) at /data/src/10.3/storage/innobase/trx/trx0rec.cc:2297
      #12 0x000055bb77d14702 in row_vers_old_has_index_entry (also_curr=0, rec=0x7f31f052809b "", mtr=0x7f3210186520, index=0x7f31a02a4ad8, ientry=0x7f31a04e05f8, roll_ptr=0, trx_id=0) at /data/src/10.3/storage/innobase/row/row0vers.cc:987
      #13 0x000055bb77f03e4b in row_undo_mod_del_mark_or_remove_sec_low (node=0x7f31a04dfb28, thr=0x7f31a04df958, index=0x7f31a02a4ad8, entry=0x7f31a04e05f8, mode=2) at /data/src/10.3/storage/innobase/row/row0umod.cc:544
      #14 0x000055bb77f041a1 in row_undo_mod_del_mark_or_remove_sec (node=0x7f31a04dfb28, thr=0x7f31a04df958, index=0x7f31a02a4ad8, entry=0x7f31a04e05f8) at /data/src/10.3/storage/innobase/row/row0umod.cc:616
      #15 0x000055bb77f055f1 in row_undo_mod_upd_exist_sec (node=0x7f31a04dfb28, thr=0x7f31a04df958) at /data/src/10.3/storage/innobase/row/row0umod.cc:1096
      #16 0x000055bb77f05edd in row_undo_mod (node=0x7f31a04dfb28, thr=0x7f31a04df958) at /data/src/10.3/storage/innobase/row/row0umod.cc:1314
      #17 0x000055bb77cfe36f in row_undo (node=0x7f31a04dfb28, thr=0x7f31a04df958) at /data/src/10.3/storage/innobase/row/row0undo.cc:308
      #18 0x000055bb77cfe551 in row_undo_step (thr=0x7f31a04df958) at /data/src/10.3/storage/innobase/row/row0undo.cc:362
      #19 0x000055bb77c4f65a in que_thr_step (thr=0x7f31a04df958) at /data/src/10.3/storage/innobase/que/que0que.cc:1049
      #20 0x000055bb77c4f8a9 in que_run_threads_low (thr=0x7f31a04df958) at /data/src/10.3/storage/innobase/que/que0que.cc:1113
      #21 0x000055bb77c4fa9a in que_run_threads (thr=0x7f31a04df958) at /data/src/10.3/storage/innobase/que/que0que.cc:1153
      #22 0x000055bb77d5ff2e in trx_rollback_to_savepoint_low (trx=0x7f3210268828, savept=0x0) at /data/src/10.3/storage/innobase/trx/trx0roll.cc:145
      #23 0x000055bb77d6039c in trx_rollback_for_mysql_low (trx=0x7f3210268828) at /data/src/10.3/storage/innobase/trx/trx0roll.cc:214
      #24 0x000055bb77d606db in trx_rollback_for_mysql (trx=0x7f3210268828) at /data/src/10.3/storage/innobase/trx/trx0roll.cc:240
      #25 0x000055bb77b497c3 in innobase_rollback (hton=0x55bb7af9c420, thd=0x7f31a0000b00, rollback_trx=true) at /data/src/10.3/storage/innobase/handler/ha_innodb.cc:4632
      #26 0x000055bb77834907 in ha_rollback_trans (thd=0x7f31a0000b00, all=true) at /data/src/10.3/sql/handler.cc:1721
      #27 0x000055bb776c147d in trans_rollback (thd=0x7f31a0000b00) at /data/src/10.3/sql/transaction.cc:422
      #28 0x000055bb77558739 in mysql_execute_command (thd=0x7f31a0000b00) at /data/src/10.3/sql/sql_parse.cc:5829
      #29 0x000055bb7755eb06 in mysql_parse (thd=0x7f31a0000b00, rawbuf=0x7f31a0015ae8 "ROLLBACK /* QNO 22863 CON_ID 12 */", length=34, parser_state=0x7f3210188620, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:8001
      #30 0x000055bb7754c2e9 in dispatch_command (command=COM_QUERY, thd=0x7f31a0000b00, packet=0x7f31a04009c1 "ROLLBACK /* QNO 22863 CON_ID 12 */ ", packet_length=35, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:1846
      #31 0x000055bb7754ad28 in do_command (thd=0x7f31a0000b00) at /data/src/10.3/sql/sql_parse.cc:1391
      #32 0x000055bb776ad791 in do_handle_one_connection (connect=0x55bb7bb65860) at /data/src/10.3/sql/sql_connect.cc:1402
      #33 0x000055bb776ad51e in handle_one_connection (arg=0x55bb7bb65860) at /data/src/10.3/sql/sql_connect.cc:1308
      #34 0x00007f3213bd6494 in start_thread (arg=0x7f3210189700) at pthread_create.c:333
      #35 0x00007f3211fbc93f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      10.2 66c14d3a8d31e while hanging

      Thread 3 (Thread 0x7faef41c5700 (LWP 32647)):
      #0  GenericPolicy<OSTrackMutex<GenericPolicy> >::enter (this=0x555abe538878 <rw_lock_debug_mutex+56>, mutex=..., filename=0x555abd3a9670 "/data/src/10.2/storage/innobase/sync/sync0debug.cc"
      , line=1268) at /data/src/10.2/storage/innobase/include/sync0policy.h:349
      #1  0x0000555abcd6d6b9 in PolicyMutex<OSTrackMutex<GenericPolicy> >::enter (this=0x555abe538840 <rw_lock_debug_mutex>, n_spins=30, n_delay=6, name=0x555abd3a9670 "/data/src/10.2/storage/inn
      obase/sync/sync0debug.cc", line=1268) at /data/src/10.2/storage/innobase/include/ib0mutex.h:635
      #2  0x0000555abce74aa8 in rw_lock_debug_mutex_enter () at /data/src/10.2/storage/innobase/sync/sync0debug.cc:1268
      #3  0x0000555abce6cc41 in rw_lock_own (lock=0x555abfef9780, lock_type=4) at /data/src/10.2/storage/innobase/sync/sync0rw.cc:1029
      #4  0x0000555abcf2401c in buf_page_get_gen (page_id=..., page_size=..., rw_latch=1, guess=0x0, mode=10, file=0x555abd3b2ed0 "/data/src/10.2/storage/innobase/include/trx0undo.ic", line=180, 
      mtr=0x7faef41c1380, err=0x0) at /data/src/10.2/storage/innobase/buf/buf0buf.cc:4829
      #5  0x0000555abce972b2 in trx_undo_page_get_s_latched (page_id=..., mtr=0x7faef41c1380) at /data/src/10.2/storage/innobase/include/trx0undo.ic:179
      #6  0x0000555abce9c364 in trx_undo_get_undo_rec_low (roll_ptr=1970324846346556, is_temp=true, heap=0x7fae78058030) at /data/src/10.2/storage/innobase/trx/trx0rec.cc:2120
      #7  0x0000555abce9c486 in trx_undo_get_undo_rec (roll_ptr=1970324846346556, is_temp=true, heap=0x7fae78058030, trx_id=2572, name=..., undo_rec=0x7faef41c1950) at /data/src/10.2/storage/inno
      base/trx/trx0rec.cc:2158
      #8  0x0000555abce9c6db in trx_undo_prev_version_build (index_rec=0x7faed44fc09b "", index_mtr=0x7faef41c22a0, rec=0x7fae78057d26 "", index=0x7fae78048798, offsets=0x7fae78057d88, heap=0x7fa
      e78058030, old_vers=0x7faef41c1a40, v_heap=0x0, vrow=0x0, v_status=0) at /data/src/10.2/storage/innobase/trx/trx0rec.cc:2244
      #9  0x0000555abce53ad2 in row_vers_old_has_index_entry (also_curr=0, rec=0x7faed44fc09b "", mtr=0x7faef41c22a0, index=0x7fae78048368, ientry=0x7fae78057798, roll_ptr=0, trx_id=0) at /data/src/10.2/storage/innobase/row/row0vers.cc:999
      #10 0x0000555abd02c8e9 in row_undo_mod_del_mark_or_remove_sec_low (node=0x7fae78056ca8, thr=0x7fae78056af0, index=0x7fae78048368, entry=0x7fae78057798, mode=2) at /data/src/10.2/storage/innobase/row/row0umod.cc:510
      #11 0x0000555abd02cc02 in row_undo_mod_del_mark_or_remove_sec (node=0x7fae78056ca8, thr=0x7fae78056af0, index=0x7fae78048368, entry=0x7fae78057798) at /data/src/10.2/storage/innobase/row/row0umod.cc:582
      #12 0x0000555abd02df86 in row_undo_mod_upd_exist_sec (node=0x7fae78056ca8, thr=0x7fae78056af0) at /data/src/10.2/storage/innobase/row/row0umod.cc:1063
      #13 0x0000555abd02e63e in row_undo_mod (node=0x7fae78056ca8, thr=0x7fae78056af0) at /data/src/10.2/storage/innobase/row/row0umod.cc:1260
      #14 0x0000555abce3e324 in row_undo (node=0x7fae78056ca8, thr=0x7fae78056af0) at /data/src/10.2/storage/innobase/row/row0undo.cc:304
      #15 0x0000555abce3e472 in row_undo_step (thr=0x7fae78056af0) at /data/src/10.2/storage/innobase/row/row0undo.cc:352
      #16 0x0000555abcda1679 in que_thr_step (thr=0x7fae78056af0) at /data/src/10.2/storage/innobase/que/que0que.cc:1047
      #17 0x0000555abcda1893 in que_run_threads_low (thr=0x7fae78056af0) at /data/src/10.2/storage/innobase/que/que0que.cc:1111
      #18 0x0000555abcda1a3c in que_run_threads (thr=0x7fae78056af0) at /data/src/10.2/storage/innobase/que/que0que.cc:1151
      #19 0x0000555abce9f233 in trx_rollback_to_savepoint_low (trx=0x7faee0b567e8, savept=0x0) at /data/src/10.2/storage/innobase/trx/trx0roll.cc:112
      #20 0x0000555abce9f59d in trx_rollback_for_mysql_low (trx=0x7faee0b567e8) at /data/src/10.2/storage/innobase/trx/trx0roll.cc:174
      #21 0x0000555abce9f87b in trx_rollback_for_mysql (trx=0x7faee0b567e8) at /data/src/10.2/storage/innobase/trx/trx0roll.cc:202
      #22 0x0000555abccb023f in innobase_rollback (hton=0x555abf7542a0, thd=0x7fae78000b00, rollback_trx=true) at /data/src/10.2/storage/innobase/handler/ha_innodb.cc:4810
      #23 0x0000555abc9a4449 in ha_rollback_trans (thd=0x7fae78000b00, all=true) at /data/src/10.2/sql/handler.cc:1672
      #24 0x0000555abc88e299 in trans_rollback (thd=0x7fae78000b00) at /data/src/10.2/sql/transaction.cc:415
      #25 0x0000555abc736a08 in mysql_execute_command (thd=0x7fae78000b00) at /data/src/10.2/sql/sql_parse.cc:5610
      #26 0x0000555abc73d496 in mysql_parse (thd=0x7fae78000b00, rawbuf=0x7fae78013288 "ROLLBACK /* QNO 3689 CON_ID 12 */", length=33, parser_state=0x7faef41c4250, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:7924
      #27 0x0000555abc72b32b in dispatch_command (command=COM_QUERY, thd=0x7fae78000b00, packet=0x7fae78008851 "ROLLBACK /* QNO 3689 CON_ID 12 */ ", packet_length=34, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1820
      #28 0x0000555abc729c8e in do_command (thd=0x7fae78000b00) at /data/src/10.2/sql/sql_parse.cc:1374
      #29 0x0000555abc878694 in do_handle_one_connection (connect=0x555ac0245720) at /data/src/10.2/sql/sql_connect.cc:1335
      #30 0x0000555abc878421 in handle_one_connection (arg=0x555ac0245720) at /data/src/10.2/sql/sql_connect.cc:1241
      #31 0x00007faef81e4494 in start_thread (arg=0x7faef41c5700) at pthread_create.c:333
      #32 0x00007faef65ca93f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      All threads for both servers are attached.

      For a note, I've seen the assertion failure on 10.2 before in my random tests, but it isn't happening here, the server always hangs instead.

      To reproduce:

      git clone https://github.com/elenst/rqg --branch=mdev15374 rqg-mdev15374
      cd rqg-mdev15374
      

      Further, if you want the test to start the server (on port 19300 by default), run the test and then stop the server if it doesn't crash before:

      perl ./runall-new.pl --duration=350 --threads=1  --grammar=./mdev15374.yy --skip-gendata  --vardir=/dev/shm/vardir
      

      Or, if you already have the server running, e.g. on port 3306, then

      perl ./gentest.pl --duration=350 --threads=1 --queries=100M  --grammar=./mdev15374.yy --dsn="dbi:mysql:user=root:host=127.0.0.1:port=3306:database=test"
      

      If you are running the test on 10.3, it is expected to crash very fast. If you are running it on 10.2, check the processlist, as soon as it starts saying something like

      +----+-------------+-----------------+------+---------+------+--------------------------+------------------------------------+----------+
      | Id | User        | Host            | db   | Command | Time | State                    | Info                               | Progress |
      +----+-------------+-----------------+------+---------+------+--------------------------+------------------------------------+----------+
      |  2 | system user |                 | NULL | Daemon  | NULL | InnoDB purge worker      | NULL                               |    0.000 |
      |  4 | system user |                 | NULL | Daemon  | NULL | InnoDB purge worker      | NULL                               |    0.000 |
      |  3 | system user |                 | NULL | Daemon  | NULL | InnoDB purge worker      | NULL                               |    0.000 |
      |  1 | system user |                 | NULL | Daemon  | NULL | InnoDB purge coordinator | NULL                               |    0.000 |
      |  5 | system user |                 | NULL | Daemon  | NULL | InnoDB shutdown handler  | NULL                               |    0.000 |
      | 16 | root        | localhost:54026 | test | Query   |   75 | init                     | ROLLBACK /* QNO 26430 CON_ID 16 */ |    0.000 |
      | 17 | root        | localhost:53639 | NULL | Query   |    0 | init                     | show processlist                   |    0.000 |
      +----+-------------+-----------------+------+---------+------+--------------------------+------------------------------------+----------+
      

      you have hit the problem.

      InnoDB will eventually abort with long semaphore wait and the test will complain, but it will take long time, because it optimistically waits for the server to wake up, while in this case the failure, when it happens, happens very fast.

      In case you don't want to clone the dedicated RQG tree, here is the grammar:

      query_init:
          CREATE TEMPORARY TABLE t1 (a INT, key (a)); INSERT INTO t1 VALUES (1),(2)
        ; CREATE TEMPORARY TABLE t2 (a INT, key (a)); INSERT INTO t2 VALUES (1),(2)
      ;
       
      query:
      	transaction |
      	UPDATE table_name SET a = _digit |
      ;
       
      table_name:
        t1 | t2
      ;
       
      transaction:
      	START TRANSACTION |
      	ROLLBACK
      ;
      

      Non-debug stack trace for the reference:

      10.3 non-debug 560743198604caf

      #2  <signal handler called>
      #3  0x00007f4bff883f0f in __memmove_avx_unaligned_erms () from /lib/x86_64-linux-gnu/libc.so.6
      #4  0x000055819f3b2726 in memcpy (__len=18446744073709539341, __src=0x7f4bd8706ff3, __dest=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/string3.h:53
      #5  mem_heap_dup (len=18446744073709539341, data=0x7f4bd8706ff3, heap=0x7f4b9402d040) at /data/src/10.3/storage/innobase/include/mem0mem.h:306
      #6  trx_undo_rec_copy (heap=0x7f4b9402d040, undo_rec=0x7f4bd8706ff3 <error: Cannot access memory at address 0x7f4bd8706ff3>) at /data/src/10.3/storage/innobase/include/trx0rec.ic:70
      #7  trx_undo_get_undo_rec_low (roll_ptr=<optimized out>, is_temp=<optimized out>, heap=0x7f4b9402d040) at /data/src/10.3/storage/innobase/trx/trx0rec.cc:2175
      #8  0x000055819f3b2ad1 in trx_undo_get_undo_rec (undo_rec=<optimized out>, name=..., trx_id=<optimized out>, heap=<optimized out>, is_temp=<optimized out>, roll_ptr=<optimized out>) at /data/src/10.3/storage/innobase/trx/trx0rec.cc:2211
      #9  trx_undo_prev_version_build (index_rec=0x7f4a8f91c020 "", index_rec@entry=0x7f4bd851009b <error: Cannot access memory at address 0x7f4bd851009b>, index_mtr=0x7f4be0020f93, index_mtr@entry=0x7f4bf117cf80, rec=0x7f4b9402cd36 "", index=0x7f4b9416c2a0, offsets=0xffffffffffffffe0, offsets@entry=0x7f4b9402cd50, heap=0x0, old_vers=0x7f4bf117c760, v_heap=0x0, vrow=0x0, v_status=0) at /data/src/10.3/storage/innobase/trx/trx0rec.cc:2297
      #10 0x000055819f385ca2 in row_vers_old_has_index_entry (also_curr=also_curr@entry=0, rec=0x7f4bd851009b <error: Cannot access memory at address 0x7f4bd851009b>, mtr=mtr@entry=0x7f4bf117cf80, index=index@entry=0x7f4b9416cc10, ientry=ientry@entry=0x7f4b9402c7b0, roll_ptr=roll_ptr@entry=0, trx_id=0) at /data/src/10.3/storage/innobase/row/row0vers.cc:1010
      #11 0x000055819f4d2889 in row_undo_mod_del_mark_or_remove_sec_low (node=node@entry=0x7f4b9402bef0, thr=thr@entry=0x7f4b94025328, index=index@entry=0x7f4b9416cc10, entry=entry@entry=0x7f4b9402c7b0, mode=mode@entry=2) at /data/src/10.3/storage/innobase/row/row0umod.cc:510
      #12 0x000055819f4d30c1 in row_undo_mod_del_mark_or_remove_sec (node=0x7f4b9402bef0, thr=0x7f4b94025328, index=0x7f4b9416cc10, entry=0x7f4b9402c7b0) at /data/src/10.3/storage/innobase/row/row0umod.cc:582
      #13 0x000055819f4d3a50 in row_undo_mod_upd_exist_sec (thr=<optimized out>, node=<optimized out>) at /data/src/10.3/storage/innobase/row/row0umod.cc:1062
      #14 row_undo_mod (node=0x7f4b9402bef0, thr=0x7f4b94025328) at /data/src/10.3/storage/innobase/row/row0umod.cc:1280
      #15 0x000055819f37b835 in row_undo (thr=0x7f4b94025328, node=0x7f4b9402bef0) at /data/src/10.3/storage/innobase/row/row0undo.cc:308
      #16 row_undo_step (thr=thr@entry=0x7f4b94025328) at /data/src/10.3/storage/innobase/row/row0undo.cc:362
      #17 0x000055819f3254bf in que_thr_step (thr=0x7f4b94025328) at /data/src/10.3/storage/innobase/que/que0que.cc:1049
      #18 que_run_threads_low (thr=0x7f4b94025328) at /data/src/10.3/storage/innobase/que/que0que.cc:1113
      #19 que_run_threads (thr=<optimized out>) at /data/src/10.3/storage/innobase/que/que0que.cc:1153
      #20 0x000055819f3ba6b8 in trx_rollback_to_savepoint_low (trx=trx@entry=0x7f4bf32156e8, savept=savept@entry=0x0) at /data/src/10.3/storage/innobase/trx/trx0roll.cc:145
      #21 0x000055819f3bac88 in trx_rollback_for_mysql_low (trx=0x7f4bf32156e8) at /data/src/10.3/storage/innobase/trx/trx0roll.cc:214
      #22 trx_rollback_for_mysql (trx=trx@entry=0x7f4bf32156e8) at /data/src/10.3/storage/innobase/trx/trx0roll.cc:290
      #23 0x000055819f2966e8 in innobase_rollback (hton=<optimized out>, thd=0x7f4b940009a8, rollback_trx=<optimized out>) at /data/src/10.3/storage/innobase/handler/ha_innodb.cc:4628
      #24 0x000055819f09a491 in ha_rollback_trans (thd=thd@entry=0x7f4b940009a8, all=all@entry=true) at /data/src/10.3/sql/handler.cc:1721
      #25 0x000055819efb15b4 in trans_rollback (thd=0x7f4b940009a8) at /data/src/10.3/sql/transaction.cc:422
      #26 0x000055819eecf522 in mysql_execute_command (thd=0x7f4b940009a8) at /data/src/10.3/sql/sql_parse.cc:5829
      #27 0x000055819eed5c2d in mysql_parse (thd=0x7f4b940009a8, rawbuf=<optimized out>, length=34, parser_state=0x7f4bf117f630, is_com_multi=<optimized out>, is_next_command=<optimized out>) at /data/src/10.3/sql/sql_parse.cc:8001
      #28 0x000055819eed853f in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7f4b940009a8, packet=packet@entry=0x7f4b94009319 "ROLLBACK /* QNO 16481 CON_ID 12 */ ", packet_length=packet_length@entry=35, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /data/src/10.3/sql/sql_parse.cc:1846
      #29 0x000055819eed8db6 in do_command (thd=0x7f4b940009a8) at /data/src/10.3/sql/sql_parse.cc:1391
      #30 0x000055819efa5454 in do_handle_one_connection (connect=connect@entry=0x5581a1b58dc8) at /data/src/10.3/sql/sql_connect.cc:1402
      #31 0x000055819efa55f4 in handle_one_connection (arg=0x5581a1b58dc8) at /data/src/10.3/sql/sql_connect.cc:1308
      #32 0x00007f4c0145d494 in start_thread (arg=0x7f4bf1180700) at pthread_create.c:333
      #33 0x00007f4bff84393f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                thiru Thirunarayanan Balathandayuthapani
                Reporter:
                elenst Elena Stepanova
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: