由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Question about memset() and memmove() size limit
相关主题
哪里能看一下fedora glibc 的 make configuration (转载)g++ default optimization error
关于SELinux (转载)说起来上次谁推荐的memmove作面试题来着
char s[]和char *ps的不同gdb debug c++的问题
一道 memset in C++的题access violation of C# in Visual Studio 2013 (转载)
some c++ question.超牛的debug
一个很诡异的ifstream问题,求助~~Segmentation fault
请教一个linux下的POSIX timer的问题。segfault
请教 C/C++ 指向多维数组的指针的问题any good open source memory pool for C
相关话题的讨论汇总
话题: memmove话题: memset话题: size话题: sizeof话题: limit
进入Programming版参与讨论
1 (共1页)
y****e
发帖数: 23939
1
I have a program which calls memset and memmove. My system is Fedora 14 x86_
64 and g++ 4.5.1. I realize now when the float data set over 8GB limit,
these two functions create segfault. The
backtrace of call stack shows it crash at:
# in __memmove_ssse3 () from /lib64/libc.so.6
The program runs OK when data set size is under 8GB.
Anybody knows why? I googled online but can't find any place talking about
the size limit of memset and memmove.
t****t
发帖数: 6806
2
grab the glibc source and read the function then...

x86_

【在 y****e 的大作中提到】
: I have a program which calls memset and memmove. My system is Fedora 14 x86_
: 64 and g++ 4.5.1. I realize now when the float data set over 8GB limit,
: these two functions create segfault. The
: backtrace of call stack shows it crash at:
: # in __memmove_ssse3 () from /lib64/libc.so.6
: The program runs OK when data set size is under 8GB.
: Anybody knows why? I googled online but can't find any place talking about
: the size limit of memset and memmove.

y****e
发帖数: 23939
3
多谢回复。看来的确得深挖glibc的源代码了,可能需要file一个bug report给Fedora
了。
因为我发现同样的程序在Fedora10(gcc 4.3.2)上没有问题,到了Fedora14(gcc 4.5.
1)上就有这个8GB的限制。
再多问一句啊,这个glibc的源代码在那个目录下啊?(也许应该到Linux版上问一下)

【在 t****t 的大作中提到】
: grab the glibc source and read the function then...
:
: x86_

t****t
发帖数: 6806
4
yumdownloader --source glibc
rpm -i ....
是装在/root下面的

Fedora
5.

【在 y****e 的大作中提到】
: 多谢回复。看来的确得深挖glibc的源代码了,可能需要file一个bug report给Fedora
: 了。
: 因为我发现同样的程序在Fedora10(gcc 4.3.2)上没有问题,到了Fedora14(gcc 4.5.
: 1)上就有这个8GB的限制。
: 再多问一句啊,这个glibc的源代码在那个目录下啊?(也许应该到Linux版上问一下)

y****e
发帖数: 23939
5
问题解决了,是跟memmove没有关系,问题出在上游。跟int的limit有关,int最大到2G
,8GB的float的index已经超过了2G,我把int改成size_t就解决了。以前程序一直是在
32位下编写的,没有处理过这么大的内存块,所以问题一直没有暴露。
如果是memset和memmove有问题的话,应该影响面很大的,网上应该能搜出很多来的。
t****t
发帖数: 6806
6
ft, 用int当然是不行的. 该用什么类型就是什么类型, 马虎不得. 马马虎虎的写, 现
在是爽了, 回头升级起来头痛死.

2G

【在 y****e 的大作中提到】
: 问题解决了,是跟memmove没有关系,问题出在上游。跟int的limit有关,int最大到2G
: ,8GB的float的index已经超过了2G,我把int改成size_t就解决了。以前程序一直是在
: 32位下编写的,没有处理过这么大的内存块,所以问题一直没有暴露。
: 如果是memset和memmove有问题的话,应该影响面很大的,网上应该能搜出很多来的。

y****e
发帖数: 23939
7
的确是这样,很多合作者是学数学和物理的,不是写程序科班出身,现实很让人无奈啊
,呵呵

【在 t****t 的大作中提到】
: ft, 用int当然是不行的. 该用什么类型就是什么类型, 马虎不得. 马马虎虎的写, 现
: 在是爽了, 回头升级起来头痛死.
:
: 2G

t****t
发帖数: 6806
8
你歇歇吧, 不说话没人当你哑巴的
P********e
发帖数: 2610
9
还不是怕你把我忘记了

【在 t****t 的大作中提到】
: 你歇歇吧, 不说话没人当你哑巴的
P********e
发帖数: 2610
10
我原意是,在程序里面不可能一贯使用size_t。 所以我觉得,最好少使用,除非调用
系统程序。
理由很简单,程序如果32-》64的时候,或者回来的时候。问题少一点。primitive的长
度反而都是一样长的。

【在 P********e 的大作中提到】
: 还不是怕你把我忘记了
相关主题
一个很诡异的ifstream问题,求助~~g++ default optimization error
请教一个linux下的POSIX timer的问题。说起来上次谁推荐的memmove作面试题来着
请教 C/C++ 指向多维数组的指针的问题gdb debug c++的问题
进入Programming版参与讨论
t****t
发帖数: 6806
11
当然是指计算size的时候用, 没人说让你把size_t当int用; 而且primitive的长度也不
是一样长的; 并且正是因为32<->64的时候要问题少, 才要在该用size_t的时候用size_
t.
所以我还是那句话, 你不说话没人当你哑巴. 你看你一个贴就三个毛病. 知道的人知道
你一贯这样, 不知道的还以为你来捣乱的呢.

【在 P********e 的大作中提到】
: 我原意是,在程序里面不可能一贯使用size_t。 所以我觉得,最好少使用,除非调用
: 系统程序。
: 理由很简单,程序如果32-》64的时候,或者回来的时候。问题少一点。primitive的长
: 度反而都是一样长的。

P********e
发帖数: 2610
12
你这个不 make sense
算size
sizeof(size_t)在32,64下是变量,所以有问题啊。
sizeof(int/double/long)都一样,所以没问题啊。

size_
调用
的长

【在 t****t 的大作中提到】
: 当然是指计算size的时候用, 没人说让你把size_t当int用; 而且primitive的长度也不
: 是一样长的; 并且正是因为32<->64的时候要问题少, 才要在该用size_t的时候用size_
: t.
: 所以我还是那句话, 你不说话没人当你哑巴. 你看你一个贴就三个毛病. 知道的人知道
: 你一贯这样, 不知道的还以为你来捣乱的呢.

t****t
发帖数: 6806
13
hahaha...

【在 P********e 的大作中提到】
: 你这个不 make sense
: 算size
: sizeof(size_t)在32,64下是变量,所以有问题啊。
: sizeof(int/double/long)都一样,所以没问题啊。
:
: size_
: 调用
: 的长

X****r
发帖数: 3557
14
what are you talking about.
sizeof(int/double/long) can be different.

【在 P********e 的大作中提到】
: 你这个不 make sense
: 算size
: sizeof(size_t)在32,64下是变量,所以有问题啊。
: sizeof(int/double/long)都一样,所以没问题啊。
:
: size_
: 调用
: 的长

P********e
发帖数: 2610
15
....你也不看帖就回
同OS下,32位和64位转换的时候,是一样的。
当然不同os,可能会不一样。

【在 X****r 的大作中提到】
: what are you talking about.
: sizeof(int/double/long) can be different.

t****t
发帖数: 6806
16
hahahahahahahaha

【在 P********e 的大作中提到】
: ....你也不看帖就回
: 同OS下,32位和64位转换的时候,是一样的。
: 当然不同os,可能会不一样。

X****r
发帖数: 3557
17
Try this yourself:
sizeof_long.c:
#include
int main() {
printf("sizeof(long) = %d\n", (int)sizeof(long));
}
gcc -m32 sizeof_long.c
./a.out
gcc -m64 sizeof_long.c
./a.out

【在 P********e 的大作中提到】
: ....你也不看帖就回
: 同OS下,32位和64位转换的时候,是一样的。
: 当然不同os,可能会不一样。

S*********g
发帖数: 5298
18
还笑的这么开心。
看看这个帖子
http://mitbbs.com/article1/Military/35211905_3_0.html

【在 t****t 的大作中提到】
: hahahahahahahaha
t****t
发帖数: 6806
19
谁知道是哪个loser, 理他做甚

【在 S*********g 的大作中提到】
: 还笑的这么开心。
: 看看这个帖子
: http://mitbbs.com/article1/Military/35211905_3_0.html

P********e
发帖数: 2610
20
en, windows下是一样的。。。

【在 X****r 的大作中提到】
: Try this yourself:
: sizeof_long.c:
: #include
: int main() {
: printf("sizeof(long) = %d\n", (int)sizeof(long));
: }
: gcc -m32 sizeof_long.c
: ./a.out
: gcc -m64 sizeof_long.c
: ./a.out

1 (共1页)
进入Programming版参与讨论
相关主题
any good open source memory pool for Csome c++ question.
c ptr question一个很诡异的ifstream问题,求助~~
我写的这个C++错在哪里?请教一个linux下的POSIX timer的问题。
有人用Boost.MPI吗?请教 C/C++ 指向多维数组的指针的问题
哪里能看一下fedora glibc 的 make configuration (转载)g++ default optimization error
关于SELinux (转载)说起来上次谁推荐的memmove作面试题来着
char s[]和char *ps的不同gdb debug c++的问题
一道 memset in C++的题access violation of C# in Visual Studio 2013 (转载)
相关话题的讨论汇总
话题: memmove话题: memset话题: size话题: sizeof话题: limit