Closed
Bug 43272
Opened 25 years ago
Closed 25 years ago
XPInstall fails on Japanese OS, Error -229
Categories
(Core Graveyard :: Installer: XPInstall Engine, defect, P3)
Tracking
(Not tracked)
VERIFIED
FIXED
M17
People
(Reporter: a-mutsu, Assigned: ftang)
References
Details
(Whiteboard: [dogfood+][nsbeta2+]fix in hand, need code review)
Build 2000061311(M16)/Win32 and 2000062008/Win32
on Win95-J
Installation of PSM displays an error.
XPInstall Results
PSM: Error encountered -- -229
Nothing is recorded by the Seamonkey/Uninstall/install1.log
Comment 1•25 years ago
|
||
Reproducible in WinNT and Linux.
Severity: normal → critical
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: Windows 95 → All
Hardware: PC → All
Target Milestone: --- → M17
Version: 1.1 → 1.2
Updated•25 years ago
|
Severity: critical → blocker
Comment 4•25 years ago
|
||
Putting on [NEED INFO] radar. PDT needs to know impact to user and risk of fix
to make a call on this bug. We need to know if the PSM is installed or not.
Whiteboard: [NEED INFO]
Comment 6•25 years ago
|
||
We have not changed anything in our install script. So this is a regression
either XP install or some JavaScript related bug within Mozilla.
Comment 7•25 years ago
|
||
Reassigning hopefully to the right product and person.
Assignee: ddrinan → mstoltz
Component: Client Library → Javascript Engine
Product: PSM → Browser
Version: 1.2 → other
Comment 8•25 years ago
|
||
Adding smoketest keyword. It is impossible to test SSL and wallet operations
without this feature.
Keywords: smoketest
Comment 9•25 years ago
|
||
so just to confirm, this is happening on non-japanese OSes (NT and Linux) with
the most recent builds?
Comment 10•25 years ago
|
||
Yes
Comment 11•25 years ago
|
||
I'm not seeing this on my NT 4.0sp6 system running today's (2000062309) build.
PSM installs and I can access https: pages and click on the lock to see PSM.`
Comment 12•25 years ago
|
||
after talking with junruh, this error is occurring when installing PSM off the
iplanet page into a mozilla build. I was not seeing this when installing a
Netscape commercial build.
Comment 13•25 years ago
|
||
dveditz was explaining to me yesterday a problem that JS could no longer call
modal dialogs, thus preventing even us from calling them (separate bug on that
issue). That in turn broke XPInstall. I don't know if this could be related,
I'll let him explain further.
Comment 14•25 years ago
|
||
I can confirm (from stepping through code) that the wrong things seem to happen
when XPInstall opens a model dialog to confirm the installation request. The
two bugs may, in fact, be related.
Is the bug fixed yet? (I'm building an updated client now)
Comment 15•25 years ago
|
||
I may not be doing this right, but when I install today's mozilla build on my NT
4.0sp6 system and then go to iplanet and install the PSM, I get an error -210.
I am seeing this in both Commercial and Mozilla builds from around 9AM PDT this
morning. (The error I see is -210, not -229.)
Comment 17•25 years ago
|
||
I was seeing this error yesterday evening. I called Terry Hayes and he finally
gave me a zip file that I had to manually install in order to use PSM functions.
Comment 18•25 years ago
|
||
this may end up being a dupe of 43354 which is based on the inability to put up
a modal dialog. if so i'm currently working on the problem. eta for a fix is
sometime this afternoon.
Comment 19•25 years ago
|
||
This (seemingly?) won't block commercial tree (which uses a different
installer), and hence is nsbeta2-.
Developers who build the entire system don't need the installer, and hence this
is dogfood-
However... we'll be really glad to see outside developers contribute a fix RSN.
Whiteboard: [NEED INFO] → [dogfood-][nsbeta2-]
Comment 20•25 years ago
|
||
this is not true. developers who build the entire system *DO* need to install
PSM from these xpi files. PSM is not part of the commercial build process
(except possibly on mac).
Whiteboard: [dogfood-][nsbeta2-]
Comment 21•25 years ago
|
||
Since this seems to work for me now that bug 43354 is fixed I assert this was
indeed a dupe.
*** This bug has been marked as a duplicate of 43354 ***
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → DUPLICATE
Reporter | ||
Comment 23•25 years ago
|
||
Was this solved?
Me 2000062914/Win32 (ZIP/installer) was tried.
However, it has not solved.
It is the same as that of the situation reported first.
Nothing is recorded by Uninstall/install1.log
Build 2000062914/Win32 on Win95-J
XPInstall Results
PSM: Error encountered -- -229
Comment 24•25 years ago
|
||
This is NOT a duplicate of 43354 which was a dialog problem. This one is a
script abort on a Japanese Win OS. I highly doubt anyone verified this bug on
that platforms.
Status: VERIFIED → REOPENED
Resolution: DUPLICATE → ---
Comment 25•25 years ago
|
||
Reassigning to ssu for now, but we probably need i18n help on this. There are
potentially extremely icky things in this script.
The MS "Common Files" directory most likely has Japanese characters in it, so
trying to create a file:// URL with those raw (un-escaped) characters is
probably wrong. And then we're likely losing characters in the automatic
unicode->singlebyte translation that often happens at the javascript boundary
if you're not careful.
For one thing we should think about adding getFolder() targets for "Win Common
Files" and "Win Program Files" because these are going to be common targets,
and on non-English systems pretty hard for script authors to get right.
Assignee: mstoltz → ssu
Status: REOPENED → NEW
Comment 26•25 years ago
|
||
Note I don't *know* any of the above is the problem, just guessing in a vacuum
since there was no line indication for the script failure.
OS: All → Windows 95
Hardware: All → PC
Comment 27•25 years ago
|
||
I was able to install PSM on both Linux and NT using 6/29 builds.
Comment 28•25 years ago
|
||
Does this prevent the installation of PSM through the commercial installer on
Japanese machines?
QA Contact: junruh → teruko
Whiteboard: [NEED INFO]
Comment 29•25 years ago
|
||
Removing smoketest blocking status, that was bug 37085. This one appears to be
limited to Japanese OS, or maybe non-Enlish in general.
Need teruko to investigate in the i18n lab. Is this error limited to the
iPlanet PSM install, or does the Commercial install on a Japanese OS suffer as
well? Once that is established, do other non-English versions of Windows have
the problem, specifically those with non-ASCII characters in the install path?
Keywords: smoketest
Summary: XPInstall Results PSM: Error encountered -- -229 → PSM Install on Japanese OS: Error encountered -229
Comment 30•25 years ago
|
||
I couldn't find Teruko, so I did a quick test of my own. Running from a Win95J
system:
1) install today's netscape 6 (commercial) build using the Typical setting which
also installs a psm.xpi. No errors reported.
2) using the above installed build, trigger the psm from the iplanet site:
http://docs.iplanet.com/docs/manuals/psm/psm-mozilla/
The Psm installer failed with a -229 error.
3) using the above installed build, go to:
ftp://sweetlou/products/client/seamonkey/windows/32bit/x86/2000-06-30-09-M17/xpi
and double click on the psm.xpi file. It fails with a -229 error.
4) using the above installed build, go to:
ftp://sweetlou/products/client/seamonkey/windows/32bit/x86/2000-06-30-09-M17/upd
ate.html
Select only the Spell Checker component, and click the Launch XPInstall button.
It fails with a -229 error.
5) installed today's commercial build on a Win95 english system and did step 4).
No errors reported.
It looks like it might be a general Win95J problem. Teruko, can you try the
above tests on other non english systems?
Comment 31•25 years ago
|
||
This appears to be some basic problem with the XPInstall engine running on a
Japanese (and possibly other non-English) Windows OS. We need to get a
debuggable system on such an OS but the install team doesn't have one.
Reasigning to ftang for help.
Assignee: ssu → ftang
Component: Javascript Engine → Installer: XPInstall Engine
Summary: PSM Install on Japanese OS: Error encountered -229 → XPInstall fails on Japanese OS, Error -229
Reporter | ||
Comment 32•25 years ago
|
||
I heard from one person of a community of Japan.
It fails in Japanese NT4 SP5 similarly.
Me Since it does not have NT, it cannot try.
Comment 33•25 years ago
|
||
This bug is appeard on my machine, WinNT4.0J/SP5.
Below are traces when I launched by 'mozilla.exe -console'.
Does it have any information for investigation?
If it does, Please compare with English OS's traces.
BuildID:20000070220
------
Document http://docs.iplanet.com/docs/manuals/psm/psm-mozilla/ loaded successful
ly
WEBSHELL+ = 8
Adding element 0 : _blank
WEBSHELL- = 7
WEBSHELL+ = 8
2
Adding Progress element 0 : _blank
WEBSHELL+ = 9
WEBSHELL+ = 10
WEBSHELL+ = 11
Setting content window
*** Pulling out the charset
in SetSecurityButton
WEBSHELL+ = 12
WEBSHELL+ = 13
It's NOT UTF-16BE- byte 28(1c)
Setting content window
*** Pulling out the charset
in SetSecurityButton
WEBSHELL+ = 14
It's NOT UTF-16BE- byte 28(1c)
WEBSHELL- = 13
----------
Comment 34•25 years ago
|
||
And more,
XPInstall of Swedish (sv-SE) language pack is succeeded on Japanese Windows OS.
in http://www.mozilla.org/projects/intl/xul-how2l10n.html
Comment 35•25 years ago
|
||
Putting on [dogfood+][nsbeta2+] radar.
Whiteboard: [NEED INFO] → [dogfood+][nsbeta2+]
Comment 37•25 years ago
|
||
the files you want to looking into with a debugger are:
mozilla/xpinstall/src/nsJSInstall.cpp
mozilla/xpinstall/src/nsInstall.cpp
mozilla/xpinstall/src/nsInstallFile.cpp
The function you want to probably step into is:
nsInstallFile::Prepare()
nsInstallFile::Complete()
Assignee | ||
Comment 41•25 years ago
|
||
here is what I got if I click on psm.xpi
"Netscape Personal Security Manager"
"Store Registry Value Stri...\Main [Install Directory]
Assignee | ||
Comment 42•25 years ago
|
||
I then get assertion
NTDLL! 77f662ac()
nsDebug::Assertion(const char * 0x011dd9bc
??_C@_0BG@EIKL@?$HMCharAt?$HM?5out?9of?9range?$AA@, const char * 0x011dd9d8
??_C@_0BA@OBAB@aIndex?$DMLength?$CI?$CJ?$AA@, const char * 0x011dd9ec
??_C@_0CH@IHJC@?4?4?2?4?4?2dist?2include?2nsAReadableSt@, int 0x00000220) line
246 + 13 bytes
basic_nsAReadableString<unsigned short>::CharAt(unsigned int 0xffffffff) line
544 + 42 bytes
basic_nsAReadableString<unsigned short>::Last() line 572
nsWinProfile::nsWinProfile(nsInstall * 0x0494fb80, const nsString & {...}, const
nsString & {...}) line 40 + 10 bytes
nsInstall::GetWinProfile(const nsString & {...}, const nsString & {...},
JSContext * 0x04926950, JSClass * 0x011e3978 struct JSClass WinProfileClass,
long * 0x04abf530) line 1103 + 39 bytes
InstallGetWinProfile(JSContext * 0x04926950, JSObject * 0x03945af8, unsigned int
0x00000002, long * 0x039e537c, long * 0x04abf530) line 1259 + 35 bytes
js_Invoke(JSContext * 0x04926950, unsigned int 0x00000002, unsigned int
0x00000000) line 716 + 23 bytes
js_Interpret(JSContext * 0x04926950, long * 0x04abff20) line 2520 + 15 bytes
js_Execute(JSContext * 0x04926950, JSObject * 0x03945af8, JSScript * 0x0496f5c0,
JSFunction * 0x00000000, JSStackFrame * 0x00000000, unsigned int 0x00000000,
long * 0x04abff20) line 887 + 13 bytes
JS_EvaluateUCScriptForPrincipals(JSContext * 0x04926950, JSObject * 0x03945af8,
JSPrincipals * 0x00000000, const unsigned short * 0x039db838, unsigned int
0x00001496, const char * 0x00000000, unsigned int 0x00000000, long * 0x04abff20)
line 2768 + 27 bytes
JS_EvaluateUCScript(JSContext * 0x04926950, JSObject * 0x03945af8, const
unsigned short * 0x039db838, unsigned int 0x00001496, const char * 0x00000000,
unsigned int 0x00000000, long * 0x04abff20) line 2750 + 35 bytes
JS_EvaluateScript(JSContext * 0x04926950, JSObject * 0x03945af8, const char *
0x039da360, unsigned int 0x00001496, const char * 0x00000000, unsigned int
0x00000000, long * 0x04abff20) line 2717 + 33 bytes
RunInstallOnThread(void * 0x04929170) line 426 + 30 bytes
_PR_NativeRunThread(void * 0x0492ad80) line 399 + 13 bytes
_threadstartex(void * 0x0492aa40) line 212 + 13 bytes
KERNEL32! 77ed4f05()
What happen is we try to exam the charAt[-1] from the following code
mFilename->Last()
since the length of mFilename is 0, Last() make it refer to -1
nsWinProfile::nsWinProfile( nsInstall* suObj, const nsString& folder, const
nsString& file )
{
MOZ_COUNT_CTOR(nsWinProfile);
mFilename = new nsString(folder);
if (mFilename)
{
if(mFilename->Last() != '\\')
{
mFilename->AppendWithConversion("\\");
}
mFilename->Append(file);
mInstallObject = suObj;
}
}
The reason we refer to CharAt(-1) is because the following code, the Length() is 0
template <class CharT>inline
CharT
basic_nsAReadableString<CharT>::Last() const
{
return CharAt(Length()-1);
}
Also, if I look at the following frame:
At nsInstall::GetWinProfile(const nsString & {...}, const nsString & {...},
JSContext * 0x04926950, JSClass * 0x011e3978 struct JSClass WinProfileClass,
long * 0x04abf530) line 1103 + 39 bytes
:
- aFile {...}
+ basic_nsAWritableString<unsigned short> {...}
- nsStr {...}
mLength 0x0000000c
mCapacity 0x0000003f
mCharSize eTwoByte
mOwnsBuffer 0x00000000
+ mStr 0x04abf368 "r"
- mUStr 0x04abf368 "ren8dot3.ini"
0x0072
- aFolder {...}
+ basic_nsAWritableString<unsigned short> {...}
- nsStr {...}
mLength 0x00000000
mCapacity 0x0000003f
mCharSize eTwoByte
mOwnsBuffer 0x00000000
+ mStr 0x04abf400 ""
- mUStr 0x04abf400 ""
0x0000
Notice aFolder = "" ( and aFile = "ren8dot3.ini" ) . The aFolder="" cause the
assertion.
Assignee | ||
Comment 43•25 years ago
|
||
I am not 100% sure the assertion cause the failed. But the assertion is caused by
http://lxr.mcom.com/commercial/source/xpinstall/packager/shrimp/windows/psm.jst#29
25 function updatePrivateProfile() 26 { 27 fTemp = getFolder("Temporary"); 28
fProgram = getFolder("Program"); 29 fRen8dot3Ini = getWinProfile(fTemp,
"ren8dot3.ini");
somehow the fTemp is ""
Assignee | ||
Comment 44•25 years ago
|
||
I am using NT4J. I didn't see -229 yet. I get assertion (as stated above) and
them a lot of
thread safe assertion if I continue.
I am not sure I experience the same problem as this bug. If I do, then I doubt
this is a non-English system problem. The first assertion I got is from
GetWinProfile. And what happen is the JavaScript wrapper try to pass two
argument to the nsInstall::GetWinProfile. The first is a folder and the second
is a string. The first folder should be the "C:\TEMP" however, the JavaScript
wrapper code failed to convert the folder value (b0) to a string so the string
is "" instead. And that cause the assertion in nsString since we try to access
Last() which is CharAt(Length()-1) while Length() == 0.
Assignee | ||
Comment 45•25 years ago
|
||
the thread safe assertion after is from nsInstallInfo::~nsInstallInfo(). I got a
lot of them. ssu- are you sure you cannot reproduce this on English system ?
Assignee | ||
Comment 46•25 years ago
|
||
The meaning of Error -229 is defined as below
xpinstall/src/nsInstall.h
SCRIPT_ERROR = -229
I set a break point at xpinstall/src/nsSoftwareUpdateRun.cpp#420
after call JS_EvaluateScript(cx,glob,scriptBuffer,scriptLength,nsnull,0,&rval);
the return value ok is false when the scriptBuffer is the content of psm.jst
IS there a way that we can validate psm.jst is a valid JavaScript ?
Comment 47•25 years ago
|
||
The thread-safety assertions in the destructor are a known problem but
basically harmless. They are not related to this problem in any way except for
making debugging extremely annoying and cumbersome.
The getFolder("Temporary") results you saw are worrying, but probably not
the cause of this problem either because Sean also reproduced it with the
spelling checker install which is a much simpler install than psm.
Comment 48•25 years ago
|
||
Yes, the script is valid javascript -- it works just fine on an English version
of windows. The -229 script error might mean the Javascript compiler couldn't
parse the file correctly but that's unlikely since the JS engine shouldn't be
sensitive to the OS language. More likely it is a runtime error, basically one
of the functions in xpinstall/src/nsJS* files returning JS_FALSE.
Assignee | ||
Comment 49•25 years ago
|
||
I talk to ssu and he show me how to reprouce THIS bug in my system. I try the
spellchecker.xpi now since it is simpler.
Here is what I got, I set break point at
InstallAddDirectory,nsInstall::AddDirectory,InstallSetPackageFolder and
nsInstall::SetPackageFolder,InstallFinializeInstall, nsInstall::FinalizeInstall
but I hit none of them when the problem occur, this mean the problem is BEFORE
them, so, I should check the function verifyDiskSpace.
Assignee | ||
Comment 50•25 years ago
|
||
Strange, the first function in verifyDiskSpace is fileGetDiskSpaceAvailable, I
set a break point at nsInstall::FileOpFileGetDiskSpaceAvailable and
InstallFileOpFileGetDiskSpaceAvailable. Neither got called when I reproduce the
problem. The problem happen even eariler.
Assignee | ||
Comment 51•25 years ago
|
||
I set break point at InstallStartInstall and nsInstall::StartInstall. It got hit
and finish ok.
Assignee | ||
Comment 52•25 years ago
|
||
I put break point in InstallLogComment, it got hit once with "startInstall: 0",
it then hit the InstallGetFolder and it seems get the correct path of bin
directory in the nsILocalFile, but it didn't hit the IntallLogComment
for the following line
logComment("communicatorFolder: " + communicatorFolder);
My theory is the "communicatorFolder: " + communicatorFolder cause some problem.
Assignee | ||
Comment 53•25 years ago
|
||
I think I am right the + cause the problem. I stop at InstallGetFolder and then
I set a break point at
http://lxr.mozilla.org/seamonkey/source/js/src/jsinterp.c#1992
1992 case JSOP_ADD:
1993 rval = rtmp = POP();
1994 lval = ltmp = POP();
1995 VALUE_TO_PRIMITIVE(cx, lval, JSTYPE_VOID, &lval);
1996 if ((cond = JSVAL_IS_STRING(lval)) != 0) {
1997 /*
1998 * Keep lval on the stack so it isn't GC'd during either
the
1999 * next VALUE_TO_PRIMITIVE or the js_ValueToString(cx,
rval).
2000 */
2001 sp[0] = lval;
2002 }
2003 VALUE_TO_PRIMITIVE(cx, rval, JSTYPE_VOID, &rval);
2004 if (cond || JSVAL_IS_STRING(rval)) {
2005 if (cond) {
and then continue, it stop at the case JSOP_ADD:
If I step through,
2003 VALUE_TO_PRIMITIVE(cx, rval, JSTYPE_VOID, &rval);
cause the code to get throw to
3434 #if JS_HAS_EXCEPTIONS
3435 /*
3436 * Has an exception been raised?
3437 */
3438 if (!ok && cx->throwing) {
Assignee | ||
Comment 54•25 years ago
|
||
the value of ok is 0 (FALSE) when this happen.
rval = 0x37795c0 and lval=0x3779594
there fore lval is a JSString (the lower three bits is 4 and rval is object
since
the lower three bits is 0.
Assignee | ||
Comment 55•25 years ago
|
||
The myth got solved. The bug is a combination of
1. the Unicode To ShiftJIS converter return a sucess code (not NS_OK but
success) while it should return NS_OK, and
2. the following code compare a nsresult with NS_OK instead of using
NS_SUCCEEDED() macro
xpinstall/src/nsJSFileSpecObj.cpp
54 PR_STATIC_CALLBACK(JSBool)
55 fso_ToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval
*rval)
....
69 if(NS_OK != nativeThis->ToString(&stringReturned))
70 return JS_FALSE;
Change the line 69 to
69 if(NS_SUCCEEDED(nativeThis->ToString(&stringReturned)))
should make it work (need test)
Also, we should fix the nsUnicodeToShiftJIS converter. But either of them should
solve this problem.
Whiteboard: [dogfood+][nsbeta2+] → [dogfood+][nsbeta2+]ETA 7/13
Assignee | ||
Comment 56•25 years ago
|
||
I think it is too risky to fix the nsJapaneseToUnicode.cpp now. The safest fix
for nsbeta2 is http://warp/u/ftang/fix43272.txt
This is very low risk. ssu- please code review and give me an ok.
Index: src/nsJSFileSpecObj.cpp
===================================================================
RCS file: /m/pub/mozilla/xpinstall/src/nsJSFileSpecObj.cpp,v
retrieving revision 1.1
diff -u -r1.1 nsJSFileSpecObj.cpp
--- nsJSFileSpecObj.cpp 1999/11/21 01:24:17 1.1
+++ nsJSFileSpecObj.cpp 2000/07/13 06:26:56
@@ -66,7 +66,7 @@
return JS_TRUE;
}
- if(NS_OK != nativeThis->ToString(&stringReturned))
+ if(NS_FAILED( nativeThis->ToString(&stringReturned)))
return JS_FALSE;
nsJSUtils::nsConvertStringToJSVal(stringReturned, cx, rval);
After apply the fix, I succsfully install spellcheck.xpi and psm.xpi.
This seems also fix the null string problem I mention eariler.
Whiteboard: [dogfood+][nsbeta2+]ETA 7/13 → [dogfood+][nsbeta2+]fix in hand, need code review
Assignee | ||
Comment 57•25 years ago
|
||
The converter problem filed in 45359. We should take this safe fix for nsbeta2
and fix 45359 after nsbeta2 (unless there are other issue related to it.)
Comment 58•25 years ago
|
||
Though the change looks okay, I am not as familiar the this part of the code as
Dan is. I would recommend having him give you his blessing.
Assignee | ||
Comment 59•25 years ago
|
||
fix check in. Mark it fix
Status: ASSIGNED → RESOLVED
Closed: 25 years ago → 25 years ago
Resolution: --- → FIXED
Reporter | ||
Comment 60•25 years ago
|
||
On-line installation of PSM was successful
by mozilla nightly 2000071320/Win32(ZIP) on Win95-J.
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
•