x86上Linux 2.6.39上的未对齐内存访问

时间:2014-11-14 10:14:21

标签: linux linux-kernel segmentation-fault pragma

我有一个CGI,它有一些#pragma packed的结构。它在linux 2.6.33上运行良好,但是当我启动linux 2.6.39内核时,同样的CGI同样的请求正在中止(可能是段错误)。

如果我删除了pragma包,则代码正在使用linux 2.6.39。

我使用的是英特尔(R)Atom(TM)CPU D510。

可能是什么原因?我可以调整内核,以便CGI可以工作。

删除pragma包是我想要做的最后一件事。(它会影响其他一些代码)

引起问题的结构是

#pragma pack(push, 1)
typedef struct some
{
    UINT    i1;
    string  s1;
    BYTE    b1;
    char    c1[MAX_LENGTH + 1];
    char    c2[MAX_LENGTH + 1];
    char    c3[MAX_LENGTH + 1];
    char    c4[MAX_LENGTH + 1];
    string  s2;
    UINT    i2;

    public:
    some()
    {
            i1 = MACRO;
            memset(c1, 0, sizeof(c1));
            memset(c2, 0, sizeof(c2));
            memset(c3, 0, sizeof(c3));
            memset(c4, 0, sizeof(c4));
    }

}       some, *pE;
#pragma pack(pop)

0 个答案:

没有答案