[MDEV-8692] perfschema test failures on ARM (on Debian build system) Created: 2015-08-28  Updated: 2017-07-17  Resolved: 2015-10-30

Status: Closed
Project: MariaDB Server
Component/s: Platform Debian
Affects Version/s: 10.0.21
Fix Version/s: 10.0.23, 5.5.57

Type: Bug Priority: Major
Reporter: Otto Kekäläinen Assignee: Alexander Barkov
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-8483 mysql-test - perfschema.setup_objects... Closed
relates to MDEV-8484 mysql-test - perfschema.func_file_io Closed
relates to MDEV-8485 mysql-test - perfschema.func_mutex fa... Closed
Sprint: 10.1.8-4, 10.0.22, 10.1.9-1

 Description   

Failing test(s): perfschema.func_file_io perfschema.func_mutex perfschema.global_read_lock perfschema.setup_objects

Platforms:

Example of failures:

perfschema.func_file_io                  [ fail ]
        Test ended at 2015-08-27 22:49:48
 
CURRENT_TEST: perfschema.func_file_io
--- /«PKGBUILDDIR»/mysql-test/suite/perfschema/r/func_file_io.result	2015-08-05 18:11:30.000000000 +0000
+++ /«PKGBUILDDIR»/mysql-test/suite/perfschema/r/func_file_io.reject	2015-08-27 22:49:48.772478431 +0000
@@ -21,10 +21,10 @@
 AND (OBJECT_NAME LIKE '%t1.MYD'));
 SELECT (@before_count >= 0) as have_before_count;
 have_before_count
-1
+NULL
 SELECT IF(@before_count > 0, 'Success', 'Failure') has_instrumentation;
 has_instrumentation
-Success
+Failure
 SELECT * FROM t1 WHERE id < 4;
 id	b
 1	initial value
@@ -36,10 +36,10 @@
 AND (OBJECT_NAME LIKE '%t1.MYD') AND (1 = 1));
 SELECT (@after_count >= 0) as have_after_count;
 have_after_count
-1
+NULL
 SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_ff1_timed;
 test_ff1_timed
-Success
+Failure
 UPDATE performance_schema.setup_instruments SET enabled='NO';
 SET @before_count = (SELECT SUM(TIMER_WAIT)
 FROM performance_schema.events_waits_history_long
@@ -47,7 +47,7 @@
 AND (OBJECT_NAME LIKE '%t1.MYD') AND (2 = 2));
 SELECT (@before_count >= 0) as have_before_count;
 have_before_count
-1
+NULL
 SELECT * FROM t1 WHERE id < 6;
 id	b
 1	initial value
@@ -61,7 +61,7 @@
 AND (OBJECT_NAME LIKE '%t1.MYD') AND (3 = 3));
 SELECT (@after_count >= 0) as have_after_count;
 have_after_count
-1
+NULL
 SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_ff2_timed;
 test_ff2_timed
 Success
 
mysqltest: Result length mismatch
 
 - saving '/«PKGBUILDDIR»/builddir/mysql-test/var/log/perfschema.func_file_io/' to '/«PKGBUILDDIR»/builddir/mysql-test/var/log/perfschema.func_file_io/'
perfschema.func_mutex                    [ fail ]
        Test ended at 2015-08-27 22:49:49
 
CURRENT_TEST: perfschema.func_mutex
--- /«PKGBUILDDIR»/mysql-test/suite/perfschema/r/func_mutex.result	2015-08-05 18:11:30.000000000 +0000
+++ /«PKGBUILDDIR»/mysql-test/suite/perfschema/r/func_mutex.reject	2015-08-27 22:49:49.282435779 +0000
@@ -40,7 +40,7 @@
 WHERE (EVENT_NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share'));
 SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_fm1_timed;
 test_fm1_timed
-Success
+Failure
 UPDATE performance_schema.setup_instruments SET enabled = 'NO'
 WHERE NAME = 'wait/synch/mutex/sql/TABLE_SHARE::tdc.LOCK_table_share';
 TRUNCATE TABLE performance_schema.events_waits_history_long;
@@ -83,7 +83,7 @@
 WHERE (EVENT_NAME = 'wait/synch/rwlock/sql/LOCK_system_variables_hash'));
 SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_fm1_rw_timed;
 test_fm1_rw_timed
-Success
+Failure
 UPDATE performance_schema.setup_instruments SET enabled = 'NO'
 WHERE NAME = 'wait/synch/rwlock/sql/LOCK_system_variables_hash';
 TRUNCATE TABLE performance_schema.events_waits_history_long;
 
mysqltest: Result content mismatch
 
 - saving '/«PKGBUILDDIR»/builddir/mysql-test/var/log/perfschema.func_mutex/' to '/«PKGBUILDDIR»/builddir/mysql-test/var/log/perfschema.func_mutex/'
perfschema.global_read_lock              [ fail ]
        Test ended at 2015-08-27 22:49:50
 
CURRENT_TEST: perfschema.global_read_lock
--- /«PKGBUILDDIR»/mysql-test/suite/perfschema/r/global_read_lock.result	2015-08-05 18:11:30.000000000 +0000
+++ /«PKGBUILDDIR»/mysql-test/suite/perfschema/r/global_read_lock.reject	2015-08-27 22:49:50.012374729 +0000
@@ -26,7 +26,7 @@
 from performance_schema.events_waits_current
 where event_name like "wait/synch/cond/sql/MDL_context::COND_wait_status";
 event_name	short_source	timer_end	timer_wait	operation
-wait/synch/cond/sql/MDL_context::COND_wait_status	mdl.cc:	SET	SET	timed_wait
+wait/synch/cond/sql/MDL_context::COND_wait_status	mdl.cc:	NULL	NULL	timed_wait
 unlock tables;
 update performance_schema.setup_instruments set enabled='NO';
 update performance_schema.setup_instruments set enabled='YES';
 
mysqltest: Result length mismatch
 
 - saving '/«PKGBUILDDIR»/builddir/mysql-test/var/log/perfschema.global_read_lock/' to '/«PKGBUILDDIR»/builddir/mysql-test/var/log/perfschema.global_read_lock/'



 Comments   
Comment by Otto Kekäläinen [ 2015-09-25 ]

I can provide access to an ARM host (64-bit armhf) if somebody wants to do their own test builds. Just mail me privately.

Comment by Elena Stepanova [ 2015-09-26 ]

svoj,

Since Otto can provide the environment, could you please look into the problem?

Comment by Alexander Barkov [ 2015-10-22 ]

On this Scaleway virtual ARM machine:
Linux scw-4b87ad 3.2.34-30 #17 SMP Mon Apr 13 15:53:45 UTC 2015 armv7l armv7l armv7l GNU/Linux

mtr perfschema.func_file_io – does not fail alone.

mtr runs that fail:

./mtr --sute=perfschema
./mtr --suite=perfschema --do-test="^(dml_|func)"
./mtr --suite=perfschema --do-test="^(dml_[l-z]|func)"
./mtr --suite=perfschema --do-test="^(dml_s|func)"
./mtr --suite=perfschema --do-test="^(dml_setup|func)"
./mtr perfschema.dml_setup_timers perfschema.func_file_io

It seems the problem is that ARM does not implement the CYCLE timer.
Perhaps this can help:
https://github.com/thoughtpolice/enable_arm_pmu/blob/master/perf_event_open.c

Comment by Alexander Barkov [ 2015-10-28 ]

A related patch from the upstream is already in MariaDB tree:

git log 49667f044197cefdb7c90b8beab3e78ec23deecd
commit 49667f044197cefdb7c90b8beab3e78ec23deecd
Author: Christopher Powers <chris.powers@oracle.com>
Date:   Fri Jul 10 20:42:33 2015 +0200
 
    Bug#21374104 SETUP_TIMERS INITIALIZATION ASSUMES CYCLE TIMER IS ALWAYS AVAILABLE
    
    For WAIT events, fall back to other timers if CYCLE is not available.

See here for details: https://bugs.mysql.com/bug.php?id=77577

Comment by Alexey Kopytov [ 2015-11-02 ]

See also https://bugs.mysql.com/bug.php?id=77620. I see my patch for it is available in 5.7.9.

Generated at Thu Feb 08 07:29:04 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.