vfprintf在32位linux上崩溃

时间:2016-01-30 17:13:04

标签: c linux crash

当我尝试在32位linux上打印以下日志时,我看到了崩溃。相同的日志在64位linux中运行良好。

printf("store [%s] PREG marker 0x%x RegID %u Session ID %u Indices %u.%u [%s.%d] StoreID %x L/T <%d - %d> \n",
                         store->name, info->ume_preg.marker, regid, sid,
                         info->ume_preg.transport_idx, info->ume_preg.topic_idx,
                         store->name, ntohs(info->ume_preg.resp_port), store_id,
                         client->src->repo->lead_sqn,
                         client->src->repo->trail_sqn);

核心筹码: -

#0  0x00870b9f in __strlen_ia32 () from /lib/libc.so.6
#1  0x0083b4df in vfprintf () from /lib/libc.so.6
#2  0x008609f0 in printf () from /lib/libc.so.6

如果您在日志中看到我有两个字符串(store-&gt; name和store-&gt;名称,打印商店名称两次)。只有当我在打印中添加两个字符串以及其他参数时才会看到崩溃。如果我只有字符串和其他参数我没有看到崩溃。

注意仅在32位linux上崩溃。

我不确定为什么strlen仅针对32位linux崩溃。

操作系统信息: -

-bash-4.1$ uname -a
Linux  2.6.32-358.6.1.el6.i686 #1 SMP Tue Apr 23 18:13:20 UTC 2013 i686 i686 i386 GNU/Linux

的libc: -

-bash-4.1$ /lib/libc-2.12.so
GNU C Library stable release version 2.12, by Roland McGrath et al.
Copyright (C) 2010 Free Software Foundation, Inc.
Compiled by GNU CC version 4.4.6 20120305 (Red Hat 4.4.6-4).
Compiled on a Linux 2.6.32 system on 2013-02-21.

有没有人对此有任何经验?

0 个答案:

没有答案