At 12:43 PM 10/24/99 +0200, Adrian Aichner wrote:
>>>>> "Craig" == Craig Lanning
<CraigL(a)DyCon.com> writes:
Craig> Yes, the individual tests did return the correct status.
Good!
Craig> minitar seemed to be OK. However, I just tried updating
Craig> some of the packages and there are problems. It downloaded
Craig> the scheme package and failed during the install. I killed
Please send me (and xemacs-beta) any error messages you get anywhere.
The only error message is "Installation of package scheme-1.09-pkg.tar.gz
failed." in the minibuffer.
Craig> XEmacs, but the shell is still waiting for it to exit.
The
Set
Options -> General Options -> Debug On Error
Try installing the package again and send us *Backtrace* if you get one.
I set this, but no backtrace was given and XEmacs still responds to the
mouse and keyboard.
I exited XEmacs and went on doing other things. A few minutes later a
message box poped up saying that XEmacs had executed an illegal instruction
and was being terminated. I'm not sure what is going on here.
Craig> following lines were printed to STDERR:
Craig> C:...XEmacs/21-2-b19/bin> xemacs
Craig> create_child.CreateProcess abs(PID) -880217 > EMACS_INT_MAX
(2147483647)
Hmmh, how often do you get the above warning? Does it occur for every
(call-process ...) or just for the minitar process?
It occurs for each (call-process ...).
Craig> Fatal error: assertion failed, file console.h, line 422,
RECORD_TYPEP (obj,
Craig> &lrecord_console) || MARKED_RECORD_P (obj)
Error checking for a console lrecord failed above assertion.
Maybe Andy knows what goes on here?
>> Are you not getting the STDERR messages saying something like the
>> following?
>>
>> Fcall_process_internal.child_setup returns PID 100, using PID -100
Craig> No.
It's pretty clear at this point that MINGW32 cannot distingush a
WindowsNT- form a Windows9[58] system.
For what it's worth, I hacked together a small program to display the
results of calling GetVersion and GetVersionEx. On my Win98 machine the
program outputs:
verData 4.10 bld 67766222 [ ] plat:Win95 (1)
version.data = C0000A04
version.info.major = 4
version.info.minor = 10
version.info.platform = FFFFC000
I will attach the code and binary at the end of this message.
Andy might come up with a solution for this, let's see.
Craig> I have access to CVS (that's what I have been using),
Craig> however, I can't build 21.1.x because Andy's patches to
Craig> support mingw32 builds are only in the 21.2.x tree.
OK
Craig> The individual calls to call-process worked just fine so I
Craig> decided to give it your stress test. I started the
Craig> (dotimes ...) and things seemed to be working fine. You
Craig> had asked that I do things while this is running so I
Craig> started iconifying and deiconifying programs, when suddenly
Craig> the blue screen of death appeared. It complained that
Craig> Window's resources were low and asked me if I wanted to
Craig> kill a particular program. The BSoD appeared several more
Craig> times, each time asking about a different program. The
Craig> first program was Explorer. Others were XEmacs, grep, and
Craig> one of the items in the System Tray.
>>
Craig> This sounds like something is not being returned to the OS.
Hmmh, only wait_for_termination gets a process handle.
Fcall_process_internal has this suspicious little comment atend:
/* Don't kill any children that the subprocess may have left behind
when exiting. */
call_process_exited = 1;
unbind_to (speccount, Qnil);
Could this be the problem?
Also call_process_cleanup will NOT call wait_for_termination if
call_process_exited is true. In that case the handle may be hanging
around.
I'll try to CloseHandle it at the end of Fcall_process_internal if
it's still open.
Thanks for the feedback!
Glad I can help.
Craig
/* -*- Mode: C -*- */
#include <stdio.h>
#include <windows.h>
typedef union {
struct info {
char major;
char minor;
short platform;
} info;
DWORD data;
} Version;
int main (int argc, char **argv)
{
OSVERSIONINFO verData;
Version version;
verData.dwOSVersionInfoSize = sizeof(verData);
if (!GetVersionEx(&verData))
printf("GetVersionEx failed. GetLastError = %d.\n", GetLastError());
printf("verData %d.%d bld %d [%s] plat:%s (%d)\n",
verData.dwMajorVersion, verData.dwMinorVersion,
verData.dwBuildNumber, verData.szCSDVersion,
((verData.dwPlatformId == VER_PLATFORM_WIN32s) ? "Win32s" :
((verData.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) ? "Win95" :
((verData.dwPlatformId == VER_PLATFORM_WIN32_NT) ? "WinNT" :
"Win??"))), verData.dwPlatformId);
version.data = GetVersion();
printf("version.data = %8X\n", version.data);
printf("version.info.major = %d\n", version.info.major);
printf("version.info.minor = %d\n", version.info.minor);
printf("version.info.platform = %X\n", version.info.platform);
}