Closed
Bug 62361
Opened 24 years ago
Closed 23 years ago
Profile Migration fails when remotely logging into HPUX
Categories
(Core Graveyard :: Profile: Migration, defect, P3)
Tracking
(Not tracked)
VERIFIED
FIXED
People
(Reporter: shannond, Assigned: mozilla)
References
Details
Attachments
(12 files)
1.63 KB,
patch
|
Details | Diff | Splinter Review | |
1.62 KB,
patch
|
Details | Diff | Splinter Review | |
2.21 KB,
patch
|
Details | Diff | Splinter Review | |
2.21 KB,
patch
|
Details | Diff | Splinter Review | |
2.05 KB,
patch
|
Details | Diff | Splinter Review | |
2.04 KB,
patch
|
Details | Diff | Splinter Review | |
4.73 KB,
patch
|
Details | Diff | Splinter Review | |
3.80 KB,
patch
|
Details | Diff | Splinter Review | |
2.88 KB,
patch
|
Details | Diff | Splinter Review | |
2.86 KB,
patch
|
Details | Diff | Splinter Review | |
3.34 KB,
patch
|
Details | Diff | Splinter Review | |
2.54 KB,
patch
|
Details | Diff | Splinter Review |
From Bugzilla Helper: User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; en-US; m18) Gecko/20001108 Netscape6/6.0 BuildID: 20001121 Profile migration does not occur when remotely logging into an HP-UX machine. We tried to rlogin into HPUX from Linux (setting display to Linux) and profile migration does not occur. Migration also does not occur when remotely logging into an HPUX machine from another HPUX machine. It does work when logging into Linux from HPUX. Reproducible: Always Steps to Reproduce: 1. From an HPUX (or Linux) machine remotely log into an HPUX machine 2. set display to the machine whose console you are currently sitting at 3. remove your .mozilla directory 4. run mozilla Actual Results: No dialog appears to indicate that profile migration is occurring. Once the browser appears, you get the default profile. Expected Results: A dialog should appear prompting to migrate a profile. Once browser appears your settings should be in place.
Reporter | ||
Comment 2•24 years ago
|
||
accepting bug
Assignee | ||
Comment 3•24 years ago
|
||
the netscape -installer switch doesn't migrate the profile over the rlogin connection either. Locally it works, however this may just be the default behavior that is working locally
This profile migration works fine with remotely logging into a Linux machine from another Linux machine. So this is a HP-UX platform specific problem. I have tested with the Linux 6.0 RTM build.
Comment 5•24 years ago
|
||
This bug occurs on solaris platform too. I tested between solaris 2.8 and solaris 2.7. The display was set on the solaris 2.8 system. Some debug messages seen were as follows: candyapples% ./netscape_debug ----------- Running Netscape 6 ------------- ./run-mozilla.sh ./mozilla-bin MOZILLA_FIVE_HOME=. LD_LIBRARY_PATH=./Cool:.:/home/raghu/xp/dist/lib:/lib:/usr/lib:/export/home/moz6/dist/lib LIBPATH=.:./Cool SHLIB_PATH=.:./Cool XPCS_HOME=./Cool MOZ_PROGRAM=./mozilla-bin MOZ_TOOLKIT= moz_debug=0 moz_debugger= Inside Migrate Profile routine. start of pref migration failed to migrate properly. err=-2142044161 creating new nsJSAimChatRendezvous Setting content window *** Pulling out the charset Loading page specified via openDialog
Assignee | ||
Comment 6•24 years ago
|
||
we may be looking at different problems. we don't get a failure notice, it just appears we never try to migrate. here is some of our output, the key output being the ProfileManager : CreateNewProfile line. It looks like your error line might be coming from a call to nsPrefMigration::ProcessPrefsCallback in mozilla/profile/pref-migrator/src/nsPrefMigration.cpp from the ProfileMigrationController function. nNCL: registering deferred (0) ###!!! ASSERTION: Invalid registryName: 'registryName', file nsProfileAccess.cpp, line 1209 ###!!! Break: at file nsProfileAccess.cpp, line 1209 ProfileManager : CreateNewProfile Profile Name: default Profile Dir: /u/jgaunt/.mozilla gLockFileName netscape.cfg gLockVendor netscape Opening file cookies.txt failed Opening file cookperm.txt failed
Assignee | ||
Comment 7•24 years ago
|
||
in nsProfileAccess.cpp (Get4xProfileInfo()) a call is made that queries the environment variable USER. when accessing another computer through rlogin that variable is not set for HP ( at least in all the examples we have seen - ksh, csh ). The return value from that call is used to set the profile name for the 6.0 profile. However we also have the HOME variable which in most cases ( better than 90% ? ) will contain the username as the last directory. Is it possible to merely pull this name from the home directory string? Is it advisable? Perhaps instead if we dont' get a value after querying the USER variable we can make a call to the os to get the username? Should we be using such a low-level call?
Assignee | ||
Comment 8•24 years ago
|
||
adding racham to the bug. racham? are you the right one to help here?
Assignee | ||
Comment 9•24 years ago
|
||
It has been suggested that we use LOGNAME instead of the USER environment variable as it appears LOGNAME is guarenteed to be there where USER is not. Doing some more research... George: is Sun seeing this problem? I want to make sure we get a fix that will work for any version of Unix ( including Linux )
Assignee | ||
Comment 10•24 years ago
|
||
sorry for spam, just to clarify, it's not broken in linux right now, but we may have to change the way it is working and THAT needs to work in linux and other Unixes.
Comment 11•24 years ago
|
||
John: don't know if it's happening on Solaris. Raghu posted earlier to this bug, but as you point out, it appears to be a different problem. Raghu: would you please try this while remotely logged in, see if the problem happens? (or delegate)
Assignee | ||
Comment 12•24 years ago
|
||
the LOGNAME fix appears to work, we're testing on Linux and preparing a diff file. It will consist basically of a #define for the LOGON string and a PR_GetEnv call using that instead of the #define for the USER string. I'll post two diffs, one for the OEM branch and one for the trunk, since there is quite a bit of difference between the 2 locations.
Assignee | ||
Comment 13•24 years ago
|
||
Assignee | ||
Comment 14•24 years ago
|
||
Assignee | ||
Comment 15•24 years ago
|
||
Found in the Stevens Unix book: FIPS 151-1 requires that a login shell must define the environment variables HOME and LOGNAME. so it looks like LOGNAME is a safer bet.
Assignee | ||
Comment 16•24 years ago
|
||
adding sspitzer and selmer, looking for approval for trunk checkin. a=??? have emailed reviewers@mozilla.org trolling for sr=
Comment 17•24 years ago
|
||
r=racham for trunk patch. After getting sr=, if you need help with checking in, please let me know. Conrad Carlen is the ProfileManager module owner now. Mozilla.org's module owners page will soon be reflecting this. Adding to the cc list now.
Comment 18•24 years ago
|
||
As far as HOME vs. LOGNAME, I'll pass to somebody with more Unix savvy. While you're at this, the NS_ASSERTION(registryName, "Invalid registryName"); should be moved inside the #if defined(XP_PC) || defined(XP_MAC). It's not used on Unix and the assertion is mis-leading.
Assignee | ||
Comment 19•24 years ago
|
||
For clarification, its USER vs LOGNAME. HOME is still needed. I noticed the ASSERTION and that in Unix we call that function with nsnull, ensuring that is asserts everytime. I'm adding a change to move that inside the #if defined ( XP_PC ... ) block. will repost patches.
Assignee | ||
Comment 21•24 years ago
|
||
Assignee | ||
Comment 22•24 years ago
|
||
Reporter | ||
Comment 23•24 years ago
|
||
John's patch fixes the OEM branch - profile migrates and assertion is gone
Comment 24•24 years ago
|
||
Do the FreeBSD variants all support LOGNAME now? I'm way out of date as a Unix hacker (kernel/networking code at SGI from '85-92), maybe everyone who is POSIX does LOGNAME and only the Linuxes and *BSDs do USER? /be
Comment 25•24 years ago
|
||
adding colin and cls since they are other 'unix variants' freaks
Comment 26•24 years ago
|
||
On OpenVMS: At build time, I have LOGNAME defined, but not USER. At run time, I have USER defined, but not LOGNAME. I can change either of these without too much difficultly, for example, if I need LOGNAME as run time. Just let me know. Colin.
Assignee | ||
Comment 27•24 years ago
|
||
hrmm... I thought they were all Posix compliant, unix and linux versions. Perhaps the solution will be to test them both, LOGNAME first then USER.
Assignee | ||
Comment 28•24 years ago
|
||
Assignee | ||
Comment 29•24 years ago
|
||
This latest diff will check first LOGNAME and if that returns null or empty string it will check USER and then proceed. If neither are set the profile will not get migrated. a trunk diff will follow...
Status: NEW → ASSIGNED
Assignee | ||
Comment 30•24 years ago
|
||
Comment 31•24 years ago
|
||
why not to set profile name to 'default' if either LOGNAME and USER are not set?
Comment 32•24 years ago
|
||
>why not to set profile name to 'default' if either LOGNAME and USER are not set?
We're using profile name here to find an existing 4.x profile. Why might it be
named 'default'? Why not 'Rumplestiltskin'? If a directory of that name does not
exist or if a profile of that name does exist, this routine will return without
doing anything. In other words, a guess at the name is probably not going to get
us much.
Comment 33•24 years ago
|
||
I just want to provide some info here. I finally got a chance to check this out on the Solaris platform. Below is what I've found: When I tried to reproduce the bug using Netscape6 (FCS) for Solaris, I've got similar error as what Raghu has reported. If I tried to reproduce the bug with my recent mozilla build (using the OEM branch tag), I saw the same assertion statement as what John has reported instead. However, my profile seemed to be migrated anyway. I saw the migration confirmation dialog and things appeared to be migrated when I brought up the browser afterwards. I have not tried applying the patch to see what the difference the patch has made. I'll report any updated information when I get to apply the patch to the OEM branch.
Comment 34•24 years ago
|
||
Just get to apply the patch to my mozilla tree (using the OEM branch). The only difference I can see is that the assertion statement is gone now. As I've said earlier, I don't see any profile migration problem on my Solaris box.
Assignee | ||
Comment 35•24 years ago
|
||
The result of the USER/LOGNAME call actually gets used for the new name of the 6.0 profile, not to find the old profile ( since we use the HOME variable for that and there is only one directory - .netscape/ that holds everything ). Setting the variable as default is actually a good idea ( duh john ), as it will allow the profile to be migrated even if there is no USER or LOGNAME variable set ( a situation that I can't really imagine happening, but I guess... ).
Assignee | ||
Comment 36•24 years ago
|
||
Assignee | ||
Comment 37•24 years ago
|
||
previous diff is for the OEM branch. will get a trunk up soon. Can someone please review the string handling closely ( with regard to assignment of "default" ). thanks. -jg
Assignee | ||
Comment 38•24 years ago
|
||
Comment 39•24 years ago
|
||
If we didn't get the profile name from any of the environment vars, isn't it still nsnull when the call to ProfileExists() happens. If we don't have a profile name and "default" is going to be used, do it before calling ProfileExists().
Assignee | ||
Comment 40•24 years ago
|
||
Ok, creating attachments that set the default in the right place. Wasn't sure how to deal with the char* stuff and didn't want to add a bunch of dup/free stuff, so I changed the existing char*s to nsCAutoStrings and everything worked. BUT there could be allocation/deallocation stuff I don't know about. I have both OEM branch and TRUNK
Assignee | ||
Comment 41•24 years ago
|
||
Assignee | ||
Comment 42•24 years ago
|
||
Comment 43•24 years ago
|
||
That's good - in terms of where the default is set.
The way the nsCAutoStrings are being used with PR_GetEnv I think will leak.
> nsCAutoString unixProfileName( PR_GetEnv(PROFILE_NAME_ENVIRONMENT_VARIABLE) );
That string is not going to own and thus free the memory returned by
PR_GetEnv(). Unless we have a string class which will take ownership of the
buffer passed to it, you should get the result of PR_GetEnv() into a temp var,
construct the nsCAutoString with that, and then free the temp var.
Assignee | ||
Comment 44•24 years ago
|
||
I'm told that the nsCAutoString tempStr( char* ) copies the char* into a stack buffer, and that it won't leak. This would appear to alleviate the other possible issue of the environment variable changing or moving before this operation is finished, since we would copy the char* instead of only having a pointer into the environment list.
Comment 45•24 years ago
|
||
Right, nsCAutoString tempStr( char* ) does copy the char* into a stack buffer. But what happens to the memory returned by PR_GetEnv from which it was copied? Looking at the existing code, it's not being freed either. Question is - is that right? It's not a fault with your patch though.
Assignee | ||
Comment 46•24 years ago
|
||
from what I can tell ( from reading Stevens ) the environment variables get passed into the program and stored in memory. All getenv does is return a pointer into that space, which is why it's dangerous to always count on that pointer because if any environment variables are redfined or added the environment list can move. Thereby giving one a pointer to an old variable. It doesn't appear that getenv allocates any memory at all. I did run a little test that called getenv 50 times and stored in a char*. I didn't see any increase in memory. In addition the address pointed to was always the same as returned by the the getenv call and was always constant. ( unless I called putenv and then it changed as the environment list moved )It was also a high number ( initially ) which points to the list being in the correct place in high memory, above the stack, with the command line args.
Comment 47•24 years ago
|
||
Alright, sounds good. Thanks for looking into that. It seems that, since PR_GetEnv is our own, somebody should have put a comment in the header about whether to free what it handed back. r=ccarlen
Comment 48•24 years ago
|
||
john, ccarlen and racham are the people to ask for reviews. there is some documentation on those environment variables, but it might be slightly out of date. see http://www.mozilla.org/unix/installer.html conrad, once this patch makes it into the trunk, can you update (and take ownership) of that document?
Comment 49•24 years ago
|
||
Yes. I'll make sure it's still accurate an updated with the additions made by this patch.
Assignee | ||
Comment 50•24 years ago
|
||
Note: this has been checked into the OEM branch, but not the trunk yet. Have never recieved sr=.
Reporter | ||
Comment 51•24 years ago
|
||
Works great on the OEM_BRANCH! Remotely logged into HPUX from Linux and from another HPUX box, my profile migrated from both.
Assignee | ||
Comment 52•24 years ago
|
||
sr=bienvenu from email thanks
Assignee | ||
Comment 53•24 years ago
|
||
Checked into trunk. IT's DEAD!!!!
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 54•24 years ago
|
||
This fix didn't take on SunOS 5.6. complained about ambiguous cast from nsCAutoString to bool in the if ( ! unixProfileName || section SO.... anyone know a good way to deal with these strings?
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Assignee | ||
Comment 55•24 years ago
|
||
error conditions: c++ -o nsProfileAccess.o -c -DOSTYPE=\"SunOS5\" -DOJI -I../../dist/include -I../../dist/include -I/usr/openwin/include -fPIC -fno-rtti -fno-handle-exceptions -O -DNDEBUG -DTRIMMED -DMOZILLA_CLIENT -include ../../config-defs.h -Wp,-MD,.deps/nsProfileAccess.pp nsProfileAccess.cpp ../../dist/include/nsAReadableString.h: In method `int basic_nsAReadableString<short unsigned int>::Compare(const short unsigned int *) const': In file included from ../../dist/include/nsAWritableString.h:29, from ../../dist/include/nsIAtom.h:19, from ../../dist/include/nsString2.h:47, from ../../dist/include/nsString.h:42, from nsProfileAccess.h:24, from nsProfileAccess.cpp:22: ../../dist/include/nsAReadableString.h:888: warning: conversion to `const basic_nsAReadableString<short unsigned int> &' from rvalue `basic_nsLiteralString<short unsigned int>' ../../dist/include/nsAReadableString.h: In method `int basic_nsAReadableString<char>::Compare(const char *) const': ../../dist/include/nsAReadableString.h:888: warning: conversion to `const basic_nsAReadableString<char> &' from rvalue `basic_nsLiteralString<char>' nsProfileAccess.cpp: In method `unsigned int nsProfileAccess::Get4xProfileInfo(const char *)': nsProfileAccess.cpp:1127: ambiguous conversion from `nsCAutoString' to `bool' nsProfileAccess.cpp:1127: candidate conversions include `const char *' and `char *' nsProfileAccess.cpp:1127: `class nsCAutoString' used where a `bool' was expected nsProfileAccess.cpp:1127: in argument to unary ! nsProfileAccess.cpp:1128: ambiguous conversion from `nsCAutoString' to `bool' nsProfileAccess.cpp:1128: candidate conversions include `const char *' and `char *' nsProfileAccess.cpp:1128: `class nsCAutoString' used where a `bool' was expected nsProfileAccess.cpp:1128: in argument to unary ! nsProfileAccess.cpp:1134: ambiguous conversion from `nsCAutoString' to `bool' nsProfileAccess.cpp:1134: candidate conversions include `const char *' and `char *' nsProfileAccess.cpp:1134: `class nsCAutoString' used where a `bool' was expected nsProfileAccess.cpp:1134: in argument to unary ! nsProfileAccess.cpp:1137: ambiguous conversion from `nsCAutoString' to `bool' nsProfileAccess.cpp:1137: candidate conversions include `const char *' and `char *' nsProfileAccess.cpp:1137: `class nsCAutoString' used where a `bool' was expected nsProfileAccess.cpp:1137: in argument to unary ! nsProfileAccess.cpp:1149: ambiguous conversion from `nsCAutoString' to `bool' nsProfileAccess.cpp:1149: candidate conversions include `const char *' and `char *' nsProfileAccess.cpp:1149: `class nsCAutoString' used where a `bool' was expected nsProfileAccess.cpp:1149: ambiguous conversion from `nsCAutoString' to `bool' nsProfileAccess.cpp:1149: candidate conversions include `const char *' and `char *' nsProfileAccess.cpp:1149: `class nsCAutoString' used where a `bool' was expected nsProfileAccess.cpp:1149: ambiguous default type conversion for `operator &&' ../../dist/include/nsBufferHandle.h: At top level: ../../dist/include/nsBufferHandle.h:163: warning: types cannot be defined inside reinterpret_cast ../../dist/include/nsBufferHandle.h:163: warning: types cannot be defined inside reinterpret_cast gmake[3]: *** [nsProfileAccess.o] Error 1 gmake[3]: Leaving directory `/export2/tinderbox/SeaMonkey/SunOS_5.6_Depend/mozilla/profile/src' gmake[2]: *** [install] Error 2 gmake[2]: Leaving directory `/export2/tinderbox/SeaMonkey/SunOS_5.6_Depend/mozilla/profile' gmake[1]: *** [install] Error 2 gmake[1]: Leaving directory `/export2/tinderbox/SeaMonkey/SunOS_5.6_Depend/mozilla' gmake: *** [build] Error 2
Comment 56•24 years ago
|
||
I am seeing this problem of Migration if I am remotely logged onto another Sparc machine . Proxies , Bookmarks , addressbook nothing gets migrated I have tried to remotely log on to another Solaris 2.8 machine from my machine which is Solars 2.7 , removed my ~/.mozilla and then bring NS6.0A Following is the output snippet.. while running netscape_debug ---------------- ... Registering plugin 19 for: "application/x-java-bean;version=1.3","Java(tm) Plug-in","" Registering plugin 20 for: "application/x-java-bean;jpi-version=1.3.0_02","Java(tm) Plug-in","" start of pref migration failed to migrate properly. err=-2142044161 creating new nsJSAimChatRendezvous Setting content window *** Pulling out the charset Loading page specified via openDialog in SetSecurityButton Error loading URL http://www.sun.com/: 804b0002 ... ------------------------------------ BTW.. it is also trying to load www.sun.com instead of sunweb.central (which is what is set as Hompage in my Netscape4.x)
Comment 57•24 years ago
|
||
Adding CC
Assignee | ||
Comment 58•23 years ago
|
||
Assignee | ||
Comment 59•23 years ago
|
||
Assignee | ||
Comment 60•23 years ago
|
||
Just added 2 new patches. The ONLY things different in these patches are the way I test the nsCAutoString for null, the logic hasn't changed any. Please verify I still have module owner approval/review just to be safe. :-) adding scc to the cc list, since he gave me the string fix asking for his sr=
Comment 61•23 years ago
|
||
might be better as nsCAutoString profileLocation(unixProfileDirectory + NS_LITERAL_CSTRING("/.netscape")); ...depending on how |profileLocation| is used in the rest of the function. sr=scc, I understand you will look at changing this along with your next round of fixes.
Assignee | ||
Comment 62•23 years ago
|
||
fixed in trunk and Netscape_6_0_OEM_BRANCH
Status: REOPENED → RESOLVED
Closed: 24 years ago → 23 years ago
Resolution: --- → FIXED
Comment 63•23 years ago
|
||
Verified fixed on OEM_branch build 20010214 (HP beta release) on HPUX 11.00
Status: RESOLVED → VERIFIED
Updated•8 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•