Experimental Physics and Industrial Control System
|
We're now at a point where we can see that the calloc() that creates the
array returns an odd pointer.
Are we right that this is a faulty implementation of calloc()? (Which is
supposed to "return a pointer aligned to suit any type of variable"?)
Ralph & Ralf
Eric Norum wrote:
On Aug 22, 2006, at 9:41 AM, Ralph Lange wrote:
Hi Jeff, hi Eric,
a colleage of mine is trying to get EPICS running on RTEMS running on
an ARM v4t.
The system crashes with a alignment fault in in BSD network stack
function in_control() which gets a struct ifreq pointer. This pointer
is created in osiSockDiscoverBroadcastAddresses(), where you create
an array of such structures by calloc()ing 100 times the size of an
struct ifreq (line 87).
Then you step through the array. When you call socket_ioctl() to get
the broadcast address (line 177), that call causes the crash down in
the BSD stack, because at that point the pointer pifreq is not
word-aligned.
We think that somehow within the array the single struct ifreq
entries are not word-aligned - which sounds not very likely looking
at the ifreq definition, or that your stepping algorithm in
ifreqNext() (line 38 ff.) returns a wrong address which is odd.
Any ideas?
What was the reason for using the ifreqNext() function instead of
just stepping with sizeof (struct ifreq)?
The folks that wrote the original socket code didn't think about the
possibility of really big addresses. Nowadays it is possible for
ifreqNext to have a stride greater than sizeof(struct ifreq). The
code in osdNetIntf.c has to deal with this. As the comment in
src/libCom/os/default/osdNetIntf.c says:
[...]
Now, getting back to your problem -- check to see what ifreq_size is
returning on that machine. Could be that you've uncovered a problem
between the RTEMS (BSD) network stack and GCC for the ARM.
- Replies:
- Re: osiSockDiscoverBroadcastAddresses(): pointer not word-aligned? Eric Norum
- References:
- osiSockDiscoverBroadcastAddresses(): pointer not word-aligned? Ralph Lange
- Re: osiSockDiscoverBroadcastAddresses(): pointer not word-aligned? Eric Norum
- Navigate by Date:
- Prev:
Re: osiSockDiscoverBroadcastAddresses(): pointer not word-aligned? Andrew Johnson
- Next:
Re: osiSockDiscoverBroadcastAddresses(): pointer not word-aligned? Eric Norum
- Index:
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: osiSockDiscoverBroadcastAddresses(): pointer not word-aligned? Eric Norum
- Next:
Re: osiSockDiscoverBroadcastAddresses(): pointer not word-aligned? Eric Norum
- Index:
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|
ANJ, 02 Feb 2012 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
·
Search
·
EPICS V4
·
IRMIS
·
Talk
·
Bugs
·
Documents
·
Links
·
Licensing
·
|