Closed
Bug 265313
Opened 21 years ago
Closed 21 years ago
Profile locking busted on little-endian machines
Categories
(Core Graveyard :: Profile: BackEnd, defect, P1)
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.8alpha5
People
(Reporter: brendan, Assigned: brendan)
References
Details
(Keywords: fixed-aviary1.0, fixed1.7.5)
Attachments
(1 file)
912 bytes,
patch
|
darin.moz
:
review+
brendan
:
superreview+
brendan
:
approval-aviary+
brendan
:
approval1.7.5+
|
Details | Diff | Splinter Review |
<brendan> argh
<brendan> missing ntohl at
http://lxr.mozilla.org/mozilla/source/profile/dirserviceprovider/src/nsProfileLock.cpp#304
<brendan> perhaps better hoisted out of the loop to after
http://lxr.mozilla.org/mozilla/source/profile/dirserviceprovider/src/nsProfileLock.cpp#270
<shaver> nice
I'd like to fix this for aviary 1.0 and 1.7.x.
/be
Assignee | ||
Comment 1•21 years ago
|
||
Hmm, something's broken at a more fundamental level:
(gdb)
304 if (addr != inaddr.s_addr)
(gdb) p inaddr
$13 = {s_addr = 2130706433}
(gdb) p/x $
$14 = {s_addr = 0x7f000001}
(gdb) p/x addr
$15 = 0x100007f
inaddr came from PR_GetHostByName, and prnetdb.h says
** Structures returned by network data base library. All addresses are
** supplied in host order, and returned in network order (suitable for
** use in system calls).
addr, which is in little-endian (host) byte order, came from inet_addr, whose
man page on FC2 says:
The inet_addr() function converts the Internet host address cp from
numbers-and-dots notation into binary data in network byte order. If
the input is invalid, INADDR_NONE (usually -1) is returned. This is an
obsolete interface to inet_aton, described immediately above; it is
obsolete because -1 is a valid address (255.255.255.255), and inet_aton
provides a cleaner way to indicate error return.
So it seems inet_addr is returning a number in host byte order, contrary to its
man page and over a decade of BSD history. Can someone test this on other
platforms and comments?
/be
Status: NEW → ASSIGNED
Priority: -- → P1
Target Milestone: --- → mozilla1.8alpha5
Assignee | ||
Comment 2•21 years ago
|
||
Blaming FC2 at this point. Welcoming data from others.
/be
OS: All → Linux
Assignee | ||
Comment 3•21 years ago
|
||
[~/src/phoenix/mozilla/js/src-e4x]$ cat foo.c
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
main() {
in_addr_t n = inet_addr("127.0.0.1");
char *p = (char *) &n;
printf("%#x\n", n);
printf("%d.%d.%d.%d\n", p[0], p[1], p[2], p[3]);
return 0;
}
[~/src/phoenix/mozilla/js/src-e4x]$ cc -o foo foo.c
[~/src/phoenix/mozilla/js/src-e4x]$ ./foo
0x100007f
127.0.0.1
Oops, I misread the two numbers and blamed the wrong party. We want 127 on the
lowest address, which for x86 is the LSB. So it seems PR_GetHostByName is
screwing up. More in a bit.
/be
Assignee | ||
Comment 4•21 years ago
|
||
Duh, I see the problem. Sorry for blaming FC2 (I'm alas conditioned by it to
do so :-/).
/be
Assignee | ||
Comment 5•21 years ago
|
||
Comment on attachment 162756 [details] [diff] [review]
obvious fix
I put this fix into a version that had a bunch of whitespace cleanup. If you
insist I'll extract the minimal fix, but cvs diff -w does not lie, and the
modeline must be upheld! ;-)
/be
Attachment #162756 -
Flags: superreview?(shaver)
Attachment #162756 -
Flags: review?(darin)
Updated•21 years ago
|
Attachment #162756 -
Flags: review?(darin) → review+
Comment 6•21 years ago
|
||
it looks like the analysis requested by brendan in bug 151188 comment 8 has been
performed :-) this bug does seems to be a duplicate of that one (per bug 151188
comment 0, various other comments, and the duplicates). oh well.
Blocks: 151188
Assignee | ||
Comment 7•21 years ago
|
||
Comment on attachment 162756 [details] [diff] [review]
obvious fix
Telepathic sr=shaver. a=me for branches.
/be
Attachment #162756 -
Flags: superreview?(shaver)
Attachment #162756 -
Flags: superreview+
Attachment #162756 -
Flags: approval1.7.x+
Attachment #162756 -
Flags: approval-aviary+
Assignee | ||
Comment 8•21 years ago
|
||
Fixed everywhere.
/be
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Flags: blocking1.7.x+
Flags: blocking-aviary1.0+
Keywords: fixed-aviary1.0,
fixed1.7.x
Resolution: --- → FIXED
Updated•9 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•