This is the mail archive of the
mailing list for the Cygwin project.
Re: -11: Problem at 1st start when "cygwin.bat" is run by Nullsoft-Installer
On Apr 10 09:48, Christoph Herdeg wrote:
> Hello List,
> We have made up an unattended installer package for cygwin using Nullsoft
> Installer. This package works on all x32 and x64 versions of Windows 2000,
> XP and Server 2003. Testing with Windows Server 2008 we discovered a
> problem: At the end of the installation, cygwin.bat is executed by the
> Nullsoft Installer. Normally bash should open and all shellscripts residing
> in /etc/profile.d should be run automagically (the script /etc/profile
> collects and runs them). In our case it doesn't - at least on 1st start -
> instead the following error message is displayed:
> "bash: cannot create temp file for here document: Bad address"
> Then bash jumps to the standard prompt. If we now start cygwin a 2nd time
> by executing cygwin.bat (directly or via the desktop icon), the scripts in
> /etc/profile.d are run as they are proposed to. Also they are run normally,
> if the Nullsoft Installer exits before starting cygwin.bat and we start the
> batch manually (directly or via the desktop icon).
> Upgrading the package "base-files-3.7-1.tar.bz2" to unpack a modified
> /etc/profile resulted that the $TMP and $TEMP variables seem to be
> correctly set to "/cygdrive/c/Users/ADMINI~1/AppData/Local/Temp". Setting
> an FullAccess-ACL for the Windows user "everyone" on this directory didn't
> change the behaviour. Using "set -x" in the modified /etc/profile did not
> produce any other errors.
> - Is it possible that Cygwin's mapping of
> "c:\Users\ADMINI~1/AppData/Local/Temp" to
> "/cygdrive/c/Users/ADMINI~1/AppData/Local/Temp" doesn't yet exist at the
> time the error occurs?
No. The environment is converted before the shell is doing something
on its own accord.
Is it possible that the cygdrive prefix doesn't exist when cygwin.bat is
called the first time? So far the installer is responsible for creating
the mount points and the cygdrive prefix in the registry. And after that,
before calling cygwin.bat, the installer should run the postinstall scripts
> - Are there any known changes between the previous Windows versions and
> Windows Server 2008 being able to cause a different behaviour when "a
> program is started manually" vs. "a program is started by another program";
> eg. different User / security / environmental context?
Not that I'm aware of. What Cygwin version are you using? Anything
before 1.5.25-11 is a bad idea to use on Windows 2008.
> - Would it be possible for the Cygwin developers to implement the usage of
> a /tmp independet from it's windows pendant to cure this?
The usage of $TEMP/$TMP/$TMPDIR has nothing to do with Cygwin. The
Cygwin DLL itself has no need for a tmp dir. The reason it's used is
that bash honors (at least) $TMPDIR. One workaround would be to delete
these environment variables before bash is called. But, of course, this
doesn't help to track down the actual cause of the problem.
> - Are there any other steps I could try or does anyone of you perhaps have
> a solution?
I have no idea what's causing your problem. I assume you will have to
debug it, using GDB, strace or sysinternal's tools. The above error
message does not tell us anything useful, except that an invalid address
has been used *somewhere*. Some debugging effort would be required
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html