Bug #76555 Bug#51893 is still alive only on cp932 (Japanese locale) Windows
Submitted: 1 Apr 2015 6:59 Modified: 6 Oct 2015 17:02
Reporter: Yasufumi Kinoshita Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Windows Severity:S3 (Non-critical)
Version:5.6.23 OS:Microsoft Windows
Assigned to: CPU Architecture:Any

[1 Apr 2015 6:59] Yasufumi Kinoshita
Description:
If system locale is cp932 on Windows, main.loaddata test crashes at Bug#51893 part.
The previous fix for Bug#51893 might not be enough for multibyte characterset.

How to repeat:
run "mysql-test-run.pl main.loaddata" at cp932 locale of Windows

Suggested fix:
string termination (just FN_LIBCHAR + '¥0') at normalize_dirname() is not enough for multibyte characterset. The termination should be along with multibyte parsing.

or

just disable multibyte environment handling at fs_character_set()
[2 Apr 2015 9:00] Umesh Shastry
Hello!

Thank you for the report.
Confirmed this issue from my colleague.
Issue observed on windows 7 professional service pack 1 + with JP locale.

Thanks,
Umesh
[2 Apr 2015 9:00] Umesh Shastry
// 5.6.23

Logging: mysql-test-run.pl  main.loaddata
2015-04-02 17:48:43 6592 [Note] Plugin 'FEDERATED' is disabled.
2015-04-02 17:48:43 6592 [Note] Binlog end
2015-04-02 17:48:43 6592 [Note] Shutting down plugin 'MyISAM'
2015-04-02 17:48:43 6592 [Note] Shutting down plugin 'CSV'
MySQL Version 5.6.23
Checking supported features...
 - SSL connections supported
Collecting tests...
Removing old var directory...
Creating var directory 'C:/Users/mmanan/Downloads/mysql5623/mysql-advanced-5.6.2
3-winx64/mysql-test/var'...
Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.loaddata                            [ fail ]
        Test ended at 2015-04-02 17:49:09

CURRENT_TEST: main.loaddata
mysqltest: At line 506: query 'select load_file(0x0A9FB76C661B409C4BEC88098C5DD7
1B1072F9691F2E827D7EC8F092B299868A3CE196C04F0FB18CAB4E1557EB72331D812379DE7A75CA
21C32E7C722C59E5CC33EF262EF04187B0F0EE756FA984DF2EAD37B1E4ADB064C3C5038F2E3B2D66
1B1C1150AAEB5425512E14D7506166D92D4533872E662F4B2D1428AAB5CCA72E75AA2EF325E196A5
A02E2E8278873C64375845994B0F39BE2FF7B478332A7B0AA5E48877C47B6F513E997848AF8CCB8A
899F3393AB35333CF0871E36698193862D486B4B9078B70C0A0A507B8A250F3F876F5A067632D5E6
5193E4445A1EC3A2C9B4C6F07AC334F0F62BC33357CB502E9B1C19D2398B6972AEC2EF21630F8C91
34C4F7DD662D8AD7BDC9E19C46720F334B66C22D4BF32ED275144E20E7669FFCF6FC143667C9F02A
577F32960FA9F2371BE1FA90E49CBC69C01531F140556854D588DD0E55E1307D78CA38E975CD999F
9AEA604266329EE62BFB5ADDA67F549E211ECFBA906C60063696352ABB82AA782D25B17E872EA587
871F450446DB1BAE0123D20404A8F2D2698B371002E986C8FCB969A99FF0E150A2709E2ED7633D02
ADA87D5B3C9487D27B2BD9D21E2EC3215DCC3CDCD884371281B95A2E9987AAF82EB499C058D9C3E7
DC1B66635F60DB121C72F929622DD47B6B2E69F59FF2AE6B63CC2EC60FFBA20EA50569DBAB5DAEFA
EB4F03966C9637AB55662EDD28439155A82D053A5299448EDB2E7BEB0F62889E2F84E6C7F34B3212
C9AAC32D521D5AB8480993F1906D5450FAB342A0FA6ED223E178BAC036B81E15783604C32A961EA1
EF20BE2EBB93D34ED37BC03142B7583303E4557E48551E4BD7CBDDEA146D5485A5D212C35189F0BD
6497E66912D2780A59A53B532E12C0A5ED1EC0445D96E8F2DD825221CFE4A65A87AA21DC8750481B
9849DD81694C3357A0ED9B78D608D8EDDE28FAFBEC17844DE5709F41E121838DB55639D77E32A259
A416D7013B2EB1259FDE1B498CBB9CAEE1D601DF3C915EA91C69B44E6B72062F5F4B3C73F06F2D5A
D185E1692E2E0A01E7DD5133693681C52EE13B2BE42D03BDCF48E4E133CF06662339B778E1C3034F
9939A433E157449172F7969ACCE1F5D2F65A4E09E4A5D5611EBEDDDBDB0C0C0A)' failed: 2013:
 Lost connection to MySQL server during query

The result from queries just before the failure was:

before  3       \tx     5C7478
after   3       \tx     5C7478
before  4       \r      5C72
after   4       \r      5C72
before  5               tab     09746162
after   5               tab     09746162
TRUNCATE t2;
SET sql_mode = 'NO_BACKSLASH_ESCAPES';
SELECT LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt");
LOAD_FILE("MYSQLTEST_VARDIR/tmp/bug37114.txt")
3 \tx
4 \r
5       tab

set session sql_mode=@OLD_SQL_MODE;
DROP TABLE t1,t2;
#
# Bug #51893: crash with certain characters given to load_file
#   function on windows
#

More results from queries before failure can be found in C:\Users\mmanan\Downloa
ds\mysql5623\mysql-advanced-5.6.23-winx64\mysql-test\var\log\loaddata.log

Server [mysqld.1 - pid: 1092, winpid: 1092, exit: 2304] failed during test run
Server log from this test:
----------SERVER LOG START-----------
2015-04-02 11:48:59 0 [Warning] TIMESTAMP with implicit DEFAULT value is depreca
ted. Please use --explicit_defaults_for_timestamp server option (see documentati
on for more details).
2015-04-02 11:48:59 6164 [Note] Plugin 'FEDERATED' is disabled.
2015-04-02 17:48:59 19b8 InnoDB: Warning: Using innodb_additional_mem_pool_size
is DEPRECATED. This option may be removed in future releases, together with the
option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2015-04-02 11:48:59 6164 [Note] InnoDB: Using atomics to ref count buffer pool p
ages
2015-04-02 11:48:59 6164 [Note] InnoDB: The InnoDB memory heap is disabled
2015-04-02 11:48:59 6164 [Note] InnoDB: Mutexes and rw_locks use Windows interlo
cked functions
2015-04-02 11:48:59 6164 [Note] InnoDB: Memory barrier is not used
2015-04-02 11:48:59 6164 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-04-02 11:48:59 6164 [Note] InnoDB: Not using CPU crc32 instructions
2015-04-02 11:48:59 6164 [Note] InnoDB: Initializing buffer pool, size = 8.0M
2015-04-02 11:48:59 6164 [Note] InnoDB: Completed initialization of buffer pool
2015-04-02 11:49:00 6164 [Note] InnoDB: Highest supported file format is Barracu
da.
2015-04-02 11:49:00 6164 [Note] InnoDB: 128 rollback segment(s) are active.
2015-04-02 11:49:00 6164 [Note] InnoDB: Waiting for purge to start
2015-04-02 11:49:00 6164 [Note] InnoDB: 5.6.23 started; log sequence number 1625
977
2015-04-02 11:49:00 6164 [Warning] C:/Users/mmanan/Downloads/mysql5623/mysql-adv
anced-5.6.23-winx64/bin/mysqld.exe: unknown variable 'loose-debug-sync-timeout=6
00'
2015-04-02 11:49:00 6164 [Warning] No existing UUID has been found, so we assume
 that this is the first time that this server has been started. Generating a new
 UUID: 1b8f282e-d915-11e4-8fc0-00059a3c7a00.
2015-04-02 11:49:01 6164 [Note] RSA private key file not found: C:\Users\mmanan\
Downloads\mysql5623\mysql-advanced-5.6.23-winx64\mysql-test\var\mysqld.1\data\\p
rivate_key.pem. Some authentication plugins will not work.
2015-04-02 11:49:01 6164 [Note] RSA public key file not found: C:\Users\mmanan\D
ownloads\mysql5623\mysql-advanced-5.6.23-winx64\mysql-test\var\mysqld.1\data\\pu
blic_key.pem. Some authentication plugins will not work.
2015-04-02 11:49:01 6164 [Note] Server hostname (bind-address): '*'; port: 13000

2015-04-02 11:49:01 6164 [Note] IPv6 is available.
2015-04-02 11:49:01 6164 [Note]   - '::' resolves to '::';
2015-04-02 11:49:01 6164 [Note] Server socket created on IP: '::'.
2015-04-02 11:49:01 6164 [Note] Event Scheduler: Loaded 0 events
2015-04-02 11:49:01 6164 [Note] C:/Users/mmanan/Downloads/mysql5623/mysql-advanc
ed-5.6.23-winx64/bin/mysqld.exe: ready for connections.
Version: '5.6.23-enterprise-commercial-advanced-log'  socket: ''  port: 13000  M
ySQL Enterprise Server - Advanced Edition (Commercial)
----------SERVER LOG END-------------

 - saving 'C:/Users/mmanan/Downloads/mysql5623/mysql-advanced-5.6.23-winx64/mysq
l-test/var/log/main.loaddata/' to 'C:/Users/mmanan/Downloads/mysql5623/mysql-adv
anced-5.6.23-winx64/mysql-test/var/log/main.loaddata/'
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 0.000 of 29 seconds executing testcases

Completed: Failed 1/1 tests, 0.00% were successful.

Failing test(s): main.loaddata

The log files in var/log may give you some hint of what went wrong.

If you want to report this error, please read first the documentation
at http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html

mysql-test-run: *** ERROR: there were failing test cases
[17 Aug 2015 2:56] Xing Zhang
Posted by developer:
 
buff[length - 1] != FN_LIBCHAR && buff[length - 1] != '/')

This is not good for Japanese, because the FN_LIBCHAR(0x5c, '\\') may be the tailing byte of Japanese character. Need to judge whether it is the tailing byte.
[6 Oct 2015 17:02] Paul Dubois
Noted in 5.7.10, 5.8.0 changelogs.

LOAD_FILE() could cause a server exit for some pathnames if the
character set was cp932.