http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60157

            Bug ID: 60157
           Summary: adding -mstrict-align for i386 and x86_64 architecture
           Product: gcc
           Version: 4.4.6
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vinxxe at gmail dot com

Created attachment 32113
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32113&action=edit
source code to reproduce the problem

the pthread_cond_wait nptl function enters an infinite loop, never suspending
the calling thread, if the address of the condition variable is misaligned.
Now, this is not a gcc bug, obviously, but my question is: 
does it make sense to add the target option 

-mstrict-align

to the i386 and x86_64 architectures, so that these kind of problem can be
detected at compilation time?

attached you will find a source code example to reproduce the problem
execute the program with 

strace -f <exec_name>

to see a neverending series of 

[pid  2922] futex(0x80499fd, FUTEX_WAIT_PRIVATE, 1, NULL) = -1 EINVAL (Invalid
argument)

here follows some info of my linux machine

----------------------------------------------------------------
cat /proc/version
Linux version 2.6.32-220.7.1.el6.centos.plus.i686 (root@thalix11dev) (gcc
version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) ) #1 SMP Mon Oct 21 07:05:28
UTC 2013

rpm -qa | grep glibc
glibc-devel-2.12-1.47.i686
glibc-common-2.12-1.47.i686
glibc-2.12-1.47.i686
glibc-debuginfo-2.12-1.47.i686
glibc-headers-2.12-1.47.i686
glibc-utils-2.12-1.47.i686
glibc-debuginfo-common-2.12-1.47.i686
glibc-static-2.12-1.47.i686

cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 15
model        : 3
model name    : Intel(R) Pentium(R) 4 CPU 2.80GHz
stepping    : 4
cpu MHz        : 2799.930
cache size    : 1024 KB
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 5
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc up pebs bts
pni dtes64 monitor ds_cpl cid xtpr
bogomips    : 5586.31
clflush size    : 64
cache_alignment    : 128
address sizes    : 36 bits physical, 32 bits virtual
power management:

rpm -qa | grep gcc
gcc-4.4.6-3.el6.i686
libgcc-4.4.6-3.el6.i686
gcc-c++-4.4.6-3.el6.i686

Reply via email to