[Python-bugs-list] [ python-Bugs-483982 ] Python 2.2b2 bdist_wininst crashes

noreply@sourceforge.net noreply@sourceforge.net
Tue, 18 Dec 2001 13:21:02 -0800


Bugs item #483982, was opened at 2001-11-20 15:39
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=483982&group_id=5470

Category: Distutils
Group: None
Status: Open
>Resolution: Fixed
Priority: 7
Submitted By: Tarn Weisner Burton (twburton)
Assigned to: Thomas Heller (theller)
Summary: Python 2.2b2 bdist_wininst crashes

Initial Comment:
The executable created by Python 2.2b2 bdist_wininst 
crashes on my system.  Python 2.1's version works fine.

This could just be my system and I can recompile the 
installer to test that, if that's needed, but after I 
looked into CVS I noted that it looks like wininst.exe 
has been checked in as a text file....hmmm

I've attached a minimal dist which exhibits to problem.

----------------------------------------------------------------------

>Comment By: Thomas Heller (theller)
Date: 2001-12-18 13:20

Message:
Logged In: YES 
user_id=11105

Here is the full story:

The distribution archive in zip-format contained an (empty) 
version of the zip-file itself. Since this has no prefix 
(PLATLIB, PURELIB, SCRIPTS, HEADERS, DATA), the loop in 
extract.c crashed with an access violation because of a bug 
in the C-code.

I've fixed it in CVS. Still waiting for some positive 
reports on this fixed version, before I close the bug.

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2001-12-17 09:42

Message:
Logged In: YES 
user_id=11105

It seems all fields have to be updated after moving this...

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2001-12-17 09:38

Message:
Logged In: YES 
user_id=11105

Moved from patches to bugs.

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2001-12-17 09:31

Message:
Logged In: YES 
user_id=11105

Raised priority to 7 because this MUST be fixed before 
release (see PEP3).

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2001-12-17 08:55

Message:
Logged In: YES 
user_id=11105

Tarn, good work!

I can now reproduce your problem here: It only appears when 
_no_ external zip.exe program is found somewhere on the 
PATH. In this case Python's zipfile.py is used, and this 
indeed creates an entry foo-1.0.win32.zip, leading to the 
crash.

This entry is not present when an zip.exe is used.

I will work on this.

----------------------------------------------------------------------

Comment By: Tarn Weisner Burton (twburton)
Date: 2001-12-10 07:37

Message:
Logged In: YES 
user_id=21784

This fails on the first file lookup.  I agree that it 
shouldn't but you can see the file that it is failing on 
by looking in the Python root.  In the case of a installer 
called "foo-1.0.win32-py2.2.exe" the first file appears to 
be "foo-1.0.win32.zip" which looks like the archive name.  
An empty file of this name also gets created by the 
installer.  I don't know if this is a normal part of a zip 
file.  If it is then adding

    if (n==0) continue;

before line 228 which is 

    pcomp = &data[pcdir->ofs_local_header

will fix it.

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2001-12-10 02:29

Message:
Logged In: YES 
user_id=11105

Tarn, this is really a problem. Thanks for finding it.

I still wonder how this bug lead to a crash. Usually the 
for-loop doesn't run up to beyond the end of the list, 
because the prefix *should* always be found.

----------------------------------------------------------------------

Comment By: Tarn Weisner Burton (twburton)
Date: 2001-12-08 18:42

Message:
Logged In: YES 
user_id=21784

Looks like I've found the problem:

line 244 in misc/extract.c is currently this:

for (i = 0; *scheme[i].name; ++i) {

The scheme list is terminated by a NULL, so *NULL causes 
an exception at the end of the list.  Instead this should 
be:

for (i = 0; scheme[i].name; ++i) {



----------------------------------------------------------------------

Comment By: A.M. Kuchling (akuchling)
Date: 2001-12-06 12:55

Message:
Logged In: YES 
user_id=11375

Reassigning to Thomas Heller; I know nothing about 
bdist_wininst.


----------------------------------------------------------------------

Comment By: Tarn Weisner Burton (twburton)
Date: 2001-11-21 16:16

Message:
Logged In: YES 
user_id=21784

Looks like I put this under Patches instead of Bugs.  Sorry.

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=483982&group_id=5470