TIP: Click on subject to list as thread! ANSI
echo: nthelp
to: mark.lewis
from: Rich
date: 2002-12-18 21:49:26
subject: Re: OS/400 and shared library hell

From: "Rich" 

This is a multi-part message in MIME format.

------=_NextPart_000_0272_01C2A6DF.5614B270
Content-Type: text/plain;
        charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

   Windows can have any number of versions.  Always could.  So can every =
system with which I'm familiar that supports shared libraries.  It's =
irrelevant.  The problems occur either when a shared library producer =
believes he has provided a compatible upgrade and wants existing clients =
to use it or when a client of a shared library misuses the library and =
either intentionally or unintentionally relies on undefined behavior and =
there is a change in the undefined behavior.  The latter is very common.

   One of my favorites of the latter is the example of an application =
that had an uninitialized stack variable.  It just so happened that an =
API called just before the call to the function with the uninitialized =
value just so happened to have the uninitialized location assigned to a =
local that would always be set to zero before the API returned.  This = had
the side effect of the leaving a reasonable value in the = uninitialized
location.  When the API changed so that its stack layout = changed the
buggy application started to fail. =20

Rich

  "Mark.Lewis"  wrote in message =
news:0099cd.92a48c{at}harborwebs.com...
  R> From: "Rich" 

   R> As a follow on, what is the feature or property of the OS
   R> that you believe is responsible and should not exist in
   R> order to prevent any programmers from making mistakes with
   R> shared libraries that introduce compatibility problems?
   R> Please answer this for both OS/400 and Windows and any
   R> other systems with which you have familiarity that also
   R> have this problem like Linux.

  FWIW: linux systems can carry multiple versions of the same libraries =
at the
  same time so that programs that need to use them may do so... the =
ability of a
  system having this is directly related to the method of installing the
  updates... instead of replacing or upgrading, just install... =
many/most things
  end up in their own directories that carry the version number of the =
install
  and then a link is created using a common name that points to the =
proper
  directory... in some cases, one must recompile apps to use the =
original name
  instead of the link to locate their needed libraries...

  all i'm saying is that it is possible and easily done... whether =
someone has
  the ability or knowledge to do so is another matter altogether...

  as an example, i have a linux box with several different kernels on =
it... each
  one has it's own /lib/modules directory where modules are located that =
are
  specific to each kernel... this is due to some structure changes in =
the
  kernel... my system flips between kernel versions very easily and =
there is
  nothing copied or altered... i simpy tell it to use vmlinuz-2.2.19-63 =
or
  vmlinuz-2.2.19.64 or whatever and everything else is already in =
place...

  )\/(ark

------=_NextPart_000_0272_01C2A6DF.5614B270
Content-Type: text/html;
        charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable








   Windows
can have any =
number of=20
versions.  Always could.  So can every system with which
I'm = familiar=20
that supports shared libraries.  It's irrelevant.  The =
problems occur=20
either when a shared library producer believes he has provided a = compatible=20
upgrade and wants existing clients to use it or when a client of a = shared=20
library misuses the library and either intentionally or unintentionally = relies=20
on undefined behavior and there is a change in the undefined =
behavior.  The=20
latter is very common.
 
   One of my
favorites of the =
latter is=20
the example of an application that had an uninitialized stack =
variable.  It=20
just so happened that an API called just before the call to the function = with=20
the uninitialized value just so happened to have the uninitialized = location=20
assigned to a local that would always be set to zero before the API=20
returned.  This had the side effect of the leaving a reasonable =
value in=20
the uninitialized location.  When the API changed so that its
stack = layout=20
changed the buggy application started to fail.  
 
Rich
 

  "Mark.Lewis" <mlewis{at}wpusa.dynip.com>">mailto:mlewis{at}wpusa.dynip.com">mlewis{at}wpusa.dynip.com>
=
wrote in=20
  message news:0099cd.92a48c{at}harborwebs.=
com...R>=20
  From: "Rich"
<{at}> R> As a follow on,
what is the =
feature=20
  or property of the OS R> that you believe is
responsible =
and=20
  should not exist in R> order to prevent any programmers =
from=20
  making mistakes with R> shared libraries that
introduce=20
  compatibility problems? R> Please answer this for both =
OS/400 and=20
  Windows and any R> other systems with which you have =
familiarity=20
  that also R> have this problem like
Linux.FWIW: =
linux=20
  systems can carry multiple versions of the same libraries at =
thesame time=20
  so that programs that need to use them may do so... the ability of =
asystem=20
  having this is directly related to the method of installing =
theupdates...=20
  instead of replacing or upgrading, just install... many/most =
thingsend up=20
  in their own directories that carry the version number of the =
installand=20
  then a link is created using a common name that points to the=20
  properdirectory... in some cases, one must recompile apps to use =
the=20
  original nameinstead of the link to locate their needed=20
  libraries...all i'm saying is that it is possible and easily =
done...=20
  whether someone hasthe ability or knowledge to do so is another =
matter=20
  altogether...as an example, i have a linux box with several =
different=20
  kernels on it... eachone has it's own /lib/modules directory where =
modules=20
  are located that arespecific to each kernel... this is due to some =

  structure changes in thekernel... my system flips between kernel =
versions=20
  very easily and there isnothing copied or altered... i simpy tell =
it to=20
  use vmlinuz-2.2.19-63 orvmlinuz-2.2.19.64 or whatever and =
everything else=20
  is already in
place...)\/(ark *
Origin:=20
(1:3634/12)

------=_NextPart_000_0272_01C2A6DF.5614B270--

--- BBBS/NT v4.01 Flag-4
* Origin: (1:3634/12)
* Origin: Barktopia BBS Site http://HarborWebs.com:8081 (1:379/1.45)
SEEN-BY: 633/267 270
@PATH: 379/1 633/267

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.