Red Hat Bugzilla – Bug 186757
opendir() work abnormal with ia32el service
Last modified: 2015-05-04 21:32:15 EDT
Description of problem:
opendir() work abnormal with ia32el service.
Version-Release number of selected component (if applicable):
Redhat Enterprise Linux 4, U1, U2,U3
Use opendir(), whenever we pass a absolute path name(eg./usr/share)or relative
path name, it will try to open the path on /emul/ia32-linux/usr/share first, if
the directory is not exist on /emul/ia32-linux/, then it going to
This will cause the 32bit program work abnormal in 64bit environment.
Steps to Reproduce:
opendir() not open the correct direcotry if the directory also exists
in /emul/ia32-linux/ directory.
opendir() can open the correct directory on ia64 platform.
*** Bug 186758 has been marked as a duplicate of this bug. ***
*** Bug 186754 has been marked as a duplicate of this bug. ***
*** Bug 186753 has been marked as a duplicate of this bug. ***
This is the behavior by design of the ia64 linux system. it's not ia32el
problem. Only way to overcome it is by changing the design of the system.
Yes, by the test result, I'v got it is the ia64 architecture problem. But could
you please give us some workaround for this issue?
And how about other APIs, where could I found the API list that function
different on ia64 platform? It would be very import for developers who porting
the program to ia64 platform. many thanks!
Answer from Intel:
As a process, Intel doesn't provide direct support for IA-32 EL customers - OSV
should do the support (in your case, redhat). I'd like to suggest you to
describe your problems clearly in your bugzilla to see how Redhat response.
Who can help me? thanks!
Where can I found the APIs list that function differnt on pure 32bit
environment and IA-32 EL environment, such as opendir() and chdir()described in
Is there any workaround for the opendir() issue, for example, is there any
option in compile?
On IA-64, all file-related functions will prefer files from /emul/ia32-linux/,
if they are available. This is built in kernel. If kernel altroot isn't
available, ia32el does that emulation itself for ia32 binaries.
For definitive list, file ia32el_v6_intel/src/ia32toia64/user32_pathwalk.c would
be of particular interest for you.
I don't think there is a workaround for that, apart from removing the file from
Is that explanation enough for you?