Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 10.0.3, 5.5.31, 5.3.12
-
Component/s: None
-
Labels:None
-
Environment:# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=praecise
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"
# uname -a
Linux prepaid1 3.2.0-45-generic #70-Ubuntu SMP Wed May 29 20:12:06 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
# free
total used free shared buffers cached
Mem: 1019508 439568 579940 0 68308 166068
-/+ buffers/cache: 205192 814316
Swap: 2097148 0 2097148
# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=praecise DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS" # uname -a Linux prepaid1 3.2.0-45-generic #70-Ubuntu SMP Wed May 29 20:12:06 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux # free total used free shared buffers cached Mem: 1019508 439568 579940 0 68308 166068 -/+ buffers/cache: 205192 814316 Swap: 2097148 0 2097148
Description
MariaDB crashes consistently with signal 11 when trying a SELECT on VIEW with a UNION and an additional JOIN in SELECT.
/var/log/syslog:
Jun 12 14:23:13 prepaid1 mysqld: 130612 14:23:13 [ERROR] mysqld got signal 11 ; Jun 12 14:23:13 prepaid1 mysqld: This could be because you hit a bug. It is also possible that this binary Jun 12 14:23:13 prepaid1 mysqld: or one of the libraries it was linked against is corrupt, improperly built, Jun 12 14:23:13 prepaid1 mysqld: or misconfigured. This error can also be caused by malfunctioning hardware. Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: To report this bug, see http://kb.askmonty.org/en/reporting-bugs Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: We will try our best to scrape up some info that will hopefully help Jun 12 14:23:13 prepaid1 mysqld: diagnose the problem, but since we have already crashed, Jun 12 14:23:13 prepaid1 mysqld: something is definitely wrong and this may fail. Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: Server version: 5.5.29-MariaDB-mariadb1~precise-log Jun 12 14:23:13 prepaid1 mysqld: key_buffer_size=67108864 Jun 12 14:23:13 prepaid1 mysqld: read_buffer_size=2097152 Jun 12 14:23:13 prepaid1 mysqld: max_used_connections=5 Jun 12 14:23:13 prepaid1 mysqld: max_threads=102 Jun 12 14:23:13 prepaid1 mysqld: thread_count=5 Jun 12 14:23:13 prepaid1 mysqld: It is possible that mysqld could use up to Jun 12 14:23:13 prepaid1 mysqld: key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 693689 K bytes of memory Jun 12 14:23:13 prepaid1 mysqld: Hope that's ok; if not, decrease some variables in the equation. Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: Thread pointer: 0x0x7f664b5e9a30 Jun 12 14:23:13 prepaid1 mysqld: Attempting backtrace. You can use the following information to find out Jun 12 14:23:13 prepaid1 mysqld: where mysqld died. If you see no messages after this, something went Jun 12 14:23:13 prepaid1 mysqld: terribly wrong... Jun 12 14:23:13 prepaid1 mysqld: stack_bottom = 0x7f6630302e40 thread_stack 0x48000 Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648f0d2fb] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648b32aa1] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6647393cb0] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648acdaa4] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648ace2f7] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648c26436] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648a226d5] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648a2d25f] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648a2f1d0] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648a33a23] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f66489d7bc2] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f66489e1a83] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f66489e8cf7] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f66489e8fdf] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f66489eb04f] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f66489eb6c3] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648aa7e63] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6648aa7f61] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f664738be9a] Jun 12 14:23:13 prepaid1 mysqld: ??:0(??)[0x7f6646abcccd] Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: Trying to get some variables. Jun 12 14:23:13 prepaid1 mysqld: Some pointers may be invalid and cause the dump to abort. Jun 12 14:23:13 prepaid1 mysqld: Query (0x7f664b5f5478): select beschreibung, betrag, kontoauszug.datum, menge, seriennummer, Jun 12 14:23:13 prepaid1 mysqld: #011buchungen_id, buchungen_storno_id, buchungen_lizenzarten_art Jun 12 14:23:13 prepaid1 mysqld: from kontoauszug Jun 12 14:23:13 prepaid1 mysqld: join kunden on kunden.nr = kontoauszug.nr Jun 12 14:23:13 prepaid1 mysqld: where kontoauszug.nr = '1342624662' Jun 12 14:23:13 prepaid1 mysqld: and kostenlos = (kunden.immer_kostenlos or (kunden.kostenlos_bis > now())) Jun 12 14:23:13 prepaid1 mysqld: order by datum desc, sort desc Jun 12 14:23:13 prepaid1 mysqld: limit 0, 10 Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: Connection ID (thread ID): 34 Jun 12 14:23:13 prepaid1 mysqld: Status: NOT_KILLED Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: 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=off,table_elimination=on,extended_keys=off Jun 12 14:23:13 prepaid1 mysqld: Jun 12 14:23:13 prepaid1 mysqld: The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains Jun 12 14:23:13 prepaid1 mysqld: information that should help you find out what is causing the crash. Jun 12 14:23:13 prepaid1 mysqld_safe: Number of processes running now: 0 Jun 12 14:23:13 prepaid1 mysqld_safe: WSREP: not restarting wsrep node automatically Jun 12 14:23:13 prepaid1 mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
To reproduce the crash create tables and a view like this:
CREATE TABLE `kunden` ( `nr` char(10) NOT NULL, `datum` datetime NOT NULL, `kostenlos_bis` datetime DEFAULT NULL, `immer_kostenlos` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`nr`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `installationen` ( `seriennummer` char(16) NOT NULL, `kdnr` char(10) NOT NULL, `orig_kdnr` char(10) DEFAULT NULL, PRIMARY KEY (`seriennummer`), KEY `fk_kunden` (`kdnr`), KEY `fk_installationen_kunden_orig_kdnr` (`orig_kdnr`), CONSTRAINT `fk_installationen_kunden_orig_kdnr` FOREIGN KEY (`orig_kdnr`) REFERENCES `kunden` (`nr`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `fk_kunden` FOREIGN KEY (`kdnr`) REFERENCES `kunden` (`nr`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `einzahlungen` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `datum` datetime NOT NULL, `betrag` decimal(9,2) NOT NULL, `kunden_nr` char(10) DEFAULT NULL, `installationen_seriennummer` char(16) DEFAULT NULL, `kostenlos` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `einzahlungen_kunden_installationen_datum` (`kunden_nr`,`installationen_seriennummer`,`datum`), KEY `fk_einzahlungen_kunden` (`kunden_nr`), KEY `fk_einzahlungen_installationen` (`installationen_seriennummer`), CONSTRAINT `fk_einzahlungen_installationen` FOREIGN KEY (`installationen_seriennummer`) REFERENCES `installationen` (`seriennummer`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_einzahlungen_kunden` FOREIGN KEY (`kunden_nr`) REFERENCES `kunden` (`nr`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `buchungen` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `datum` datetime NOT NULL, `menge` int(11) DEFAULT NULL, `installationen_seriennummer` char(16) DEFAULT NULL, `tarife_nr` int(10) unsigned DEFAULT NULL, `lizenzarten_art` int(10) unsigned DEFAULT NULL, `kunden_nr` char(10) DEFAULT NULL, `kostenlos` tinyint(1) NOT NULL DEFAULT '0', `beschreibung` text NOT NULL, `tarif_preis` decimal(9,2) DEFAULT NULL, `tarif_menge` int(11) DEFAULT NULL, `storno_id` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `buchungen_kunden_tarife_datum` (`kunden_nr`,`installationen_seriennummer`,`tarife_nr`,`datum`), KEY `fk_buchungen_kunden` (`kunden_nr`), KEY `fk_buchungen_lizenzarten` (`lizenzarten_art`), KEY `fk_buchungen_installationen` (`installationen_seriennummer`) USING BTREE, KEY `fk_buchungen_tarife` (`tarife_nr`) USING BTREE, KEY `buchungen_storno_id` (`storno_id`), CONSTRAINT `fk_buchungen_installationen` FOREIGN KEY (`installationen_seriennummer`) REFERENCES `installationen` (`seriennummer`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_buchungen_kunden` FOREIGN KEY (`kunden_nr`) REFERENCES `kunden` (`nr`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE VIEW `kontoauszug` AS select `kunden`.`nr` AS `nr`, `einzahlungen`.`datum` AS `datum`, `einzahlungen`.`betrag` AS `betrag`, 'Einzahlung' AS `beschreibung`, NULL AS `menge`, 1 AS `sort`, `installationen`.`seriennummer` AS `seriennummer`, `einzahlungen`.`kostenlos` AS `kostenlos`, NULL AS `buchungen_id`, NULL AS `buchungen_storno_id`, NULL AS `buchungen_lizenzarten_art` from ((`kunden` join `einzahlungen` on((`einzahlungen`.`kunden_nr` = `kunden`.`nr`))) left join `installationen` on((`installationen`.`seriennummer` = `einzahlungen`.`installationen_seriennummer`))) union select `kunden`.`nr` AS `nr`, `buchungen`.`datum` AS `datum`, ((`buchungen`.`menge` * `buchungen`.`tarif_preis`) * -(1)) AS `betrag`, if(isnull(`buchungen`.`tarif_menge`), concat(if((`buchungen`.`menge` > 0),'Storno ',''),'Verbrauch: ',`buchungen`.`beschreibung`),concat('Verwendung: ',if((`buchungen`.`menge` > 1),concat(`buchungen`.`menge`,_utf8' x '),_utf8''),`buchungen`.`beschreibung`)) AS `beschreibung`, ifnull((`buchungen`.`menge` * `buchungen`.`tarif_menge`),`buchungen`.`menge`) AS `menge`, if(isnull(`buchungen`.`tarif_menge`),3,2) AS `sort`, `installationen`.`seriennummer` AS `seriennummer`, `buchungen`.`kostenlos` AS `kostenlos`, `buchungen`.`id` AS `buchungen_id`, `buchungen`.`storno_id` AS `buchungen_storno_id`, `buchungen`.`lizenzarten_art` AS `buchungen_lizenzarten_art` from ((`kunden` join `buchungen` on((`buchungen`.`kunden_nr` = `kunden`.`nr`))) left join `installationen` on((`installationen`.`seriennummer` = `buchungen`.`installationen_seriennummer`))); insert into kunden (nr, datum) values ('1342624662', now());
When submitting this SELECT MariaDB crashes:
– ****CRASH****
select beschreibung, betrag, kontoauszug.datum, menge, seriennummer, buchungen_id, buchungen_storno_id, buchungen_lizenzarten_art from kontoauszug join kunden on kunden.nr = kontoauszug.nr where kontoauszug.nr = '1342624662' and kostenlos = (kunden.immer_kostenlos or (kunden.kostenlos_bis > now())) order by datum desc, sort desc limit 0, 10;
Gliffy Diagrams
Attachments
Issue Links
- duplicates
-
MDEV-4610 SQL query crashes MariaDB with derived_with_keys
-
- Closed
-
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
Backtrace looks similar to
MDEV-4610