public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Chris Faylor <cgf@cygnus.com>
To: cygwin@sources.redhat.com
Subject: Re: DLL naming conventions
Date: Thu, 31 Aug 2000 17:19:00 -0000	[thread overview]
Message-ID: <20000831201847.A22959@cygnus.com> (raw)
In-Reply-To: <39AEDDC9.D4315497@ece.gatech.edu>

On Thu, Aug 31, 2000 at 06:35:53PM -0400, Charles S. Wilson wrote:
>Cygwin has libz.dll
>GIMP has (a different) libz.dll (sorry to pick on you, Tor; I know you
>don't even use the name libz.dll for your zlib dll, but let me use GIMP
>as an example, okay?)
>  -- assume for the moment that libz.dll uses 'shared regions' whatever
>those are. DATA exports? I dunno.
>
>You run a cygwin program from /usr/bin -- it'll load & use the cygwin
>libz.dll in /usr/bin. Fine.
>
>Then you run GIMP. It loads *it's* version of libz.dll. Blammo! Problem.
>'shared region' mismatch or whatever. If libz.dll uses shared regions...
>
>Or vice versa: you run GIMP first, and it works. Then you run a cygwin
>app that depends on libz.dll and blammo!.
>
>How can this problem be fixed, short of (a) never ever exporting DATA --
>if that's what 'shared regions' are(???) or (b) using different names
>for the dlls -- and we're back to the 'cyg' prefix, or assuming that all
>those OTHER people will use different prefixes and leave us alone...

Cygwin's shared region problem comes about because it uses the name
'cygwin' when naming shared memory regions.

If the mythical 'libz' uses the name 'libz' then naming your version
of libz.dll 'chuck.wilson.libz.version.1.1a.dll' will not solve that.

Shared memory usage really has nothing to do with DLL naming.

>(niggling little question: do all dll's set aside a 'shared region'? or
>only those that export DATA items?  If a dll doesn't use a 'shared
>region' then you wouldn't see these sorts of errors, as long as the two
>dlls were ABI/API compatible -- or would you? )

The accepted way to share information is with CreateFileMapping and
MapViewOfFile.  There is also a method for sharing data by marking
a section in the dll as "shared".  Microsoft has said that that's not
guaranteed to work, but I've never seen it fail.

So, again, cygwin is somewhat unique in being able to detect when there
are two versions in use.  It can do this because it uses shared memory
for things like pid info, etc.  Not every DLL will do this.  And, if
a DLL does do this the problem is not necessarily rectified by renaming
the DLL.  In fact, I think it is unlikely.

cgf

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

  parent reply	other threads:[~2000-08-31 17:19 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-08-31 12:41 Earnie Boyd
2000-08-31 12:43 ` Chris Faylor
2000-08-31 13:44   ` Charles Wilson
2000-08-31 14:14     ` Chris Faylor
2000-08-31 15:36       ` Charles S. Wilson
2000-08-31 15:44         ` Robert Collins
2000-08-31 15:51           ` Charles S. Wilson
2000-08-31 16:06             ` Robert Collins
2000-08-31 15:46         ` Tor Lillqvist
2000-08-31 17:19         ` Chris Faylor [this message]
2000-09-02  9:36           ` David A. Cobb
2000-09-02  9:43             ` Chris Faylor
2000-08-31 15:19     ` Michael Ring
  -- strict thread matches above, loose matches on Subject: below --
2000-09-05  8:56 Earnie Boyd
2000-09-05  5:37 Earnie Boyd
2000-09-05  7:32 ` Egor Duda
2000-09-05  7:40   ` Larry Hall (RFK Partners, Inc)
2000-09-06  2:28     ` Egor Duda
2000-09-04  8:38 Bernard Dautrevaux
2000-09-04 13:59 ` Robert Collins
2000-09-05 14:38   ` David A. Cobb
2000-09-05 14:52   ` David A. Cobb
2000-09-05 15:08     ` Robert Collins
2000-09-04  8:18 Bernard Dautrevaux
2000-09-04  6:59 Bernard Dautrevaux
2000-09-04  6:11 Bernard Dautrevaux
2000-09-05 14:28 ` David A. Cobb
2000-09-04  5:31 Bernard Dautrevaux
2000-09-04  5:44 ` Robert Collins
2000-09-04  6:26   ` Corinna Vinschen
2000-09-04  7:23   ` Charles S. Wilson
2000-09-04  8:09     ` Charles S. Wilson
2000-09-04 11:03       ` Chris Faylor
2000-09-04 14:19     ` Robert Collins
2000-09-05 14:08     ` David A. Cobb
2000-09-01  4:49 Tor Lillqvist
2000-09-01  6:47 ` Charles S. Wilson
2000-09-02  6:56   ` Gary V. Vaughan
2000-09-02 11:36     ` Charles S. Wilson
2000-09-02 16:40       ` Gary V. Vaughan
2000-09-02 19:20         ` Chris Faylor
2000-09-02 21:23           ` Robert Collins
2000-09-02 22:56           ` Charles Wilson
2000-09-03  5:31           ` Gary V. Vaughan
2000-09-03  9:31             ` Chris Faylor
2000-09-03 10:32               ` Chris Faylor
2000-09-04  6:56               ` Gary V. Vaughan
2000-09-02 22:32         ` Charles Wilson
2000-09-03  5:29           ` Gary V. Vaughan
2000-09-03 12:40             ` Alexandre Oliva
2000-08-31 23:56 Bernard Dautrevaux
2000-09-01  6:40 ` Charles S. Wilson
2000-09-01  6:58   ` Larry Hall (RFK Partners, Inc)
2000-08-31 23:55 Bernard Dautrevaux
2000-08-31  6:40 Earnie Boyd
2000-08-31  8:47 ` Charles S. Wilson
2000-08-31  8:56   ` Chris Faylor
2000-08-31  9:47     ` Egor Duda
2000-08-31 11:12       ` Chris Faylor
2000-08-31 11:33         ` Matt Minnis
2000-08-31 11:40           ` Chris Faylor
2000-08-31 13:01             ` Tor Lillqvist
2000-08-31  4:22 Bernard Dautrevaux
2000-08-30  9:45 Bernard Dautrevaux
2000-08-30 12:13 ` Charles Wilson
2000-08-30  3:36 Paul Sokolovsky
2000-08-30  7:26 ` Chris Faylor
2000-08-31  4:21   ` Re[2]: " Paul Sokolovsky
2000-08-31  8:56     ` Chris Faylor
2000-08-30  7:48 ` Charles Wilson
2000-08-30  7:52   ` Chris Faylor
2000-08-30  8:07     ` Norman Vine
2000-08-30  8:17       ` Charles Wilson
2000-08-30  8:19         ` Charles Wilson
2000-08-30 11:37         ` Chris Faylor
2000-08-30  8:11     ` Charles Wilson
2000-08-31  5:07   ` Re[2]: " Paul Sokolovsky
2000-08-31  8:58     ` Charles S. Wilson
2000-08-31 11:28     ` Re[2]: " Tor Lillqvist
2000-08-31 11:47       ` Chris Faylor
2000-08-31 12:07         ` Larry Hall (RFK Partners, Inc)
     [not found]   ` <20000831230822.R7695@demon.co.uk>
2000-08-31 18:58     ` Charles S. Wilson
2000-09-02  6:56       ` Gary V. Vaughan
2000-08-31 20:27 ` Charles S. Wilson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20000831201847.A22959@cygnus.com \
    --to=cgf@cygnus.com \
    --cc=cygwin@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).