Bug #12194 Valgrind: Source and destination overlap in memcpy
| Submitted: | 27 Jul 2005 4:24 | Modified: | 26 Aug 2005 1:28 |
|---|---|---|---|
| Reporter: | Matt Wagner | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 4.1.12 | OS: | x86 linux 32bit |
| Assigned to: | Chad MILLER | CPU Architecture: | Any |
[27 Jul 2005 4:24]
Matt Wagner
[27 Jul 2005 14:25]
Marko Mäkelä
Matt, it could also mean that memmove() should be used instead of memcpy().
[26 Aug 2005 1:28]
Jim Winstead
same problems repeating as with Bug #12193.
[17 Jan 2007 22:37]
Chad MILLER
==7769== Source and destination overlap in memcpy(0x76D76A1, 0x76D76A1, 1) ==7769== at 0x4022C36: memcpy (mc_replace_strmem.c:116) ==7769== by 0x836FF37: field_conv(Field*, Field*) (field_conv.cc:708) ==7769== by 0x817E2A1: Item_field::save_in_field(Field*, bool) (item.cc:4318) ==7769== by 0x83C89C6: sp_eval_expr(THD*, Field*, Item**) (sp_head.cc:361) ==7769== by 0x83D1CF6: sp_rcontext::set_variable(THD*, Field*, Item**) (sp_rcontext.cc:355)
[17 Jan 2007 22:46]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/18300 ChangeSet@1.2598, 2007-01-17 17:46:26-05:00, cmiller@zippy.cornsilk.net +1 -0 Bug#12194: Valgrind: Source and destination overlap in memcpy memcpy() must not be given two memory regions that overlap. memmove() handles such memory properly and costs little extra. I found one instance in my valgrind run of 5.1, in test "sp": ==7769== Source and destination overlap in memcpy(0x76D76A1, 0x76D76A1, 1) ==7769== at 0x4022C36: memcpy (mc_replace_strmem.c:116) ==7769== by 0x836FF37: field_conv(Field*, Field*) (field_conv.cc:708) ==7769== by 0x817E2A1: Item_field::save_in_field(Field*, bool) (item.cc:4318) ==7769== by 0x83C89C6: sp_eval_expr(THD*, Field*, Item**) (sp_head.cc:361) ==7769== by 0x83D1CF6: sp_rcontext::set_variable(THD*, Field*, Item**) (sp_rcontext.cc:355) ==7769== by 0x83D1D2A: sp_rcontext::set_variable(THD*, unsigned, Item**) (sp_rcontext.cc:342) ==7769== by 0x821559D: select_dumpvar::send_data(List<Item>&) (sql_class.cc:1958)
[24 May 2008 4:11]
Mark Callaghan
I get the error for type_timestamp using 5.0.37 with a 32-bit debug build for Linux 2.6 and x86. The code from field_conv() is below. It is odd that there is a hack to avoid the compiler warnings only for purify builds. Although, this might not be breaking anything because the source and dest pointers are the same.
{ // Identical fields
#ifdef HAVE_purify
/* This may happen if one does 'UPDATE ... SET x=x' */
if (to->ptr != from->ptr)
#endif
memcpy(to->ptr,from->ptr,to->pack_length());
return 0;
}
}
The warning is:
==5081== Source and destination overlap in memcpy(0x1BC16921, 0x1BC16921, 4)
==5081== at 0x1B902851: memcpy (mac_replace_strmem.c:394)
==5081== by 0x826DAA6: field_conv(Field*, Field*) (field_conv.cc:709)
==5081== by 0x80FCE81: Item_field::save_in_field(Field*, bool) (item.cc:4257)
==5081== by 0x81BE3E1: fill_record(THD*, List<Item>&, List<Item>&, bool) (sql_base.cc:5088)
==5081== by 0x81BE4C7: fill_record_n_invoke_before_triggers(THD*, List<Item>&, List<Item>&, bool, Table_triggers_list*, trg_event_type) (sql_base.cc:5127)
==5081== by 0x81FB414: mysql_update(THD*, st_table_list*, List<Item>&, List<Item>&, Item*, unsigned, st_order*, unsigned long long, enum_duplicates, bool) (sql_update.cc:448)
==5081== by 0x818E450: mysql_execute_command(THD*) (sql_parse.cc:3423)
==5081== by 0x819499A: mysql_parse(THD*, char*, unsigned) (sql_parse.cc:5948)
==5081== by 0x818A322: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1786)
==5081== by 0x8189B10: do_command(THD*) (sql_parse.cc:1568)
==5081== by 0x8188C03: handle_one_connection (sql_parse.cc:1194)
==5081== by 0x1B938CAB: pthread_start_thread (manager.c:310)
==5081== by 0x1BB82129: clone (clone.S:119)
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.058 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.