[MDEV-3123] LP:445845 - pbxt.multi_update test repeatably hangs on windows Created: 2009-10-07 Updated: 2012-10-04 Resolved: 2012-10-04 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Sergei Petrunia | Assignee: | Unassigned |
| Resolution: | Not a Bug | Votes: | 0 |
| Labels: | Launchpad | ||
| Attachments: |
|
| Description |
|
pbxt.multi_update test hangs on Windows (32 bit, debug build), but not on Linux. I run perl mysql-test-run.pl - and it's running forever, with mysqld.exe consuming 100% CPU. If I attach a debugger, I observe the following: mysqld.exe!_RTC_CheckEsp() C++ mysqld.exe!end_send(JOIN * join=0x02b22090, st_join_table * join_tab=0x02b6c4a0, bool end_of_records=false) Line 12328 + 0x25 bytes C++ mysqld.exe!evaluate_join_record(JOIN * join=0x02b22090, st_join_table * join_tab=0x02b6c310, int error=0) Line 11548 + 0x19 bytes C++ mysqld.exe!sub_select(JOIN * join=0x02b22090, st_join_table * join_tab=0x02b6c310, bool end_of_records=false) Line 11439 + 0x11 bytes C++ mysqld.exe!do_select(JOIN * join=0x02b22090, List<Item> * fields=0x02b231f0, st_table * table=0x00000000, Procedure * procedure=0x00000000) Line 11189 + 0xf bytes C++ mysqld.exe!JOIN::exec() Line 2231 + 0x19 bytes C++ mysqld.exe!mysql_select(THD * thd=0x02a49690, Item * * * rref_pointer_array=0x02a4ac3c, TABLE_LIST * tables=0x02b21e20, unsigned int wild_num=0, List<Item> & fields={...} , Item * conds=0x00000000, unsigned int og_num=0, st_order * order=0x00000000, st_order * group=0x00000000, Item * having=0x00000000, st_order * proc_param=0x00000000, unsigned __int64 select_options=3489942016, select_result * result=0x02b22010, st_select_lex_unit * unit=0x02a4a8c8, st_select_lex * select_lex=0x02a4ab40) Line 2427 C++ ---------- kernel32.dll!7c809574() -------------- > mysqld.exe!xt_p_mutex_unlock(xt_mutex_struct * mx=0x0168d384) Line 103 + 0xc bytes C++ > mysqld.exe!xt_p_cond_timedwait(pthread_cond_t * cond=0x029e6290, xt_mutex_struct * mt=0x029e626c, timespec * abstime=0x0915fe90) Line 377 + 0x17 bytes C++ If I then kill mysqld.exe, I get this: pbxt.multi_update [ fail ] CURRENT_TEST: pbxt.multi_update I've tried several times and every time it was stuck at exactly this query. |
| Comments |
| Comment by Paul McCullagh (Inactive) [ 2009-10-08 ] |
|
Re: pbxt.multi_update test repeatably hangs on windows Thanks for the bug report. It is odd that we get a hang here because the lock that is acquired by the writing thread is always released 2 lines later. Maybe it has something to do with the way mutexes are implemented on Windows, in general. We will try to repeat the error. |
| Comment by Mark Callaghan [ 2009-10-08 ] |
|
Re: [Bug 445845] Re: pbxt.multi_update test repeatably hangs on windows Is this a potential problems – http://bugs.mysql.com/bug.php?id=47768 > > mysqld.exe!end_send(JOIN * join=0x02b22090, st_join_table * join_tab=0x02b6c4a0, bool end_of_records=false) Line 12328 + 0x25 bytes C++ > mysqld.exe!evaluate_join_record(JOIN * join=0x02b22090, st_join_table * join_tab=0x02b6c310, int error=0) Line 11548 + 0x19 bytes C++ > mysqld.exe!sub_select(JOIN * join=0x02b22090, st_join_table * join_tab=0x02b6c310, bool end_of_records=false) Line 11439 + 0x11 bytes C++ > mysqld.exe!do_select(JOIN * join=0x02b22090, List<Item> * fields=0x02b231f0, st_table * table=0x00000000, Procedure * procedure=0x00000000) Line 11189 + 0xf bytes C++ > mysqld.exe!JOIN::exec() Line 2231 + 0x19 bytes C++ > mysqld.exe!mysql_select(THD * thd=0x02a49690, Item * * * rref_pointer_array=0x02a4ac3c, TABLE_LIST * tables=0x02b21e20, unsigned int wild_num=0, List<Item> & fields={...} , Item * conds=0x00000000, unsigned int og_num=0, st_order * order=0x00000000, st_order * group=0x00000000, Item * having=0x00000000, st_order * proc_param=0x00000000, unsigned __int64 select_options=3489942016, select_result * result=0x02b22010, st_select_lex_unit * unit=0x02a4a8c8, st_select_lex * select_lex=0x02a4ab40) Line 2427 C++ – |
| Comment by Vladimir Kolesnikov (Inactive) [ 2009-10-08 ] |
|
Re: pbxt.multi_update test repeatably hangs on windows thanks for your input. We have resolved this issue. It is not related to the problem you mentioned. The test-case was just timing out. Tuning test parameters to allow longer test time allows the test to finish successfully. |
| Comment by Paul McCullagh (Inactive) [ 2009-10-08 ] |
|
Re: pbxt.multi_update test repeatably hangs on windows But this does indicate to me that we can improve performance here. We should probably replace the mutex used in this case with a spin lock. |
| Comment by Vladimir Kolesnikov (Inactive) [ 2009-10-08 ] |
|
Re: pbxt.multi_update test repeatably hangs on windows The test was performed on a single-core machine so I'm not sure how useful spin-locking would be... |
| Comment by Rasmus Johansson (Inactive) [ 2009-10-08 ] |
|
Launchpad bug id: 445845 |