From: Paul Wolneykien <manowar@altlinux.org> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: [devel] memcpy глючит (или я не умею его готовить) Date: Thu, 21 Feb 2019 16:17:07 +0300 Message-ID: <5d1faa4c-f21b-047b-b8e9-27d28109f0b0@altlinux.org> (raw) Коллеги, прошу помощи разбором одной проблемы. Предполагаю, что это какая-то очевидная ошибка: то ли я действительно не умею готовить memcpy(), то ли где-то в программе есть ошибки при работе с памятью, которые влияют косвенно (может в данном случае такое быть?). Итак, у меня есть вот такой код¹ > 1460 if (_data.size % 2 && _data.data[8] == 0x04) { > 1461 // Uncompressed point (the first 8 bytes is the UKM) > 1462 memcpy (_data.data + 8, _data.data + 9, _data.size - 9); > 1463 _data.size--; > 1464 } после выполнения которого на Сизифе, я получаю копию массива данных за исключением 9-го (по счёту с 1) байта. Как и планировалось. Однако, если тот же самый бинарь запустить на машинке с p8, то получается неожиданный и странный эффект: 57-й байт заменяется копией 58-го. Вот как это выглядит (см. конец строки 0x4cc050 – начало строки 0x4cc058 во втором дампе): > (gdb) x/73ubfx _data.data > 0x4cc020: 0xdd 0x0a 0x35 0x80 0x51 0x13 0xed 0xdb > 0x4cc028: 0x04 0xd6 0x9b 0xa0 0x15 0x3b 0xa2 0x72 > 0x4cc030: 0x98 0x72 0xd0 0x2a 0x64 0x45 0x79 0x05 > 0x4cc038: 0x4e 0x0f 0x74 0x4e 0x70 0x07 0xa9 0x4f > 0x4cc040: 0x87 0x53 0xb4 0x55 0xd3 0xc6 0x81 0x48 > 0x4cc048: 0x90 0xbd 0xa1 0xff 0x28 0x7e 0x97 0x41 > 0x4cc050: 0x2a 0x6e 0xbf 0x5e 0xfc 0xa0 0xf4 0x2b > 0x4cc058: 0xcd 0x47 0x64 0x36 0x46 0xb0 0x02 0x7b > 0x4cc060: 0x11 0x03 0xe6 0x9c 0xed 0x94 0x43 0x50 > 0x4cc068: 0xdf > > (gdb) n > 1463 > > (gdb) x/73ubfx _data.data > 0x4cc020: 0xdd 0x0a 0x35 0x80 0x51 0x13 0xed 0xdb > 0x4cc028: 0xd6 0x9b 0xa0 0x15 0x3b 0xa2 0x72 0x98 > 0x4cc030: 0x72 0xd0 0x2a 0x64 0x45 0x79 0x05 0x4e > 0x4cc038: 0x0f 0x74 0x4e 0x70 0x07 0xa9 0x4f 0x87 > 0x4cc040: 0x53 0xb4 0x55 0xd3 0xc6 0x81 0x48 0x90 > 0x4cc048: 0xbd 0xa1 0xff 0x28 0x7e 0x97 0x41 0x2a > 0x4cc050: 0x6e 0xbf 0x5e 0xfc 0xa0 0xf4 0x2b 0x47 > 0x4cc058: 0x47 0x64 0x36 0x46 0xb0 0x02 0x7b 0x11 > 0x4cc060: 0x03 0xe6 0x9c 0xed 0x94 0x43 0x50 0xdf > 0x4cc068: 0xdf На других входных данных пока не пробовал. Зато пробовал на разных машинах с Сизифом и p8 — воспроизводится стабильно. Причём, один из Сизифов не самый новый. Однако на Сизифах работает, а на p8 — получаю паразитную копию того самого 57-го байта. Архитектуры везде x86_64. --- ¹ http://git.altlinux.org/gears/g/gnupg-pkcs11-scd.git?p=gnupg-pkcs11-scd.git;a=blob;f=gnupg-pkcs11-scd/gnupg-pkcs11-scd/command.c;h=6fd39a8ef70dede06e54c49ab86bdfc2c01e74c3;hb=6bda8fd5e3b3862edca3a38ac62c01477b6ab909#l1460
next reply other threads:[~2019-02-21 13:17 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-21 13:17 Paul Wolneykien [this message] 2019-02-21 13:22 ` Vladimir Didenko 2019-02-21 13:28 ` Paul Wolneykien 2019-02-21 13:25 ` Alexey V. Vissarionov 2019-02-22 19:27 ` Leonid Krivoshein 2019-02-22 20:51 ` Vladimir Didenko 2019-02-22 22:48 ` Leonid Krivoshein 2019-02-23 1:21 ` Mikhail Efremov 2019-02-23 12:28 ` Leonid Krivoshein 2019-02-23 12:55 ` Alexey V. Vissarionov 2019-02-23 13:08 ` Leonid Krivoshein 2019-02-23 14:46 ` Alexey Tourbin 2019-02-23 15:02 ` Leonid Krivoshein 2019-02-24 11:06 ` Mikhail Efremov 2019-02-24 16:22 ` [devel] gcc pointer arithmetics Dmitry V. Levin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=5d1faa4c-f21b-047b-b8e9-27d28109f0b0@altlinux.org \ --to=manowar@altlinux.org \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git