| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| 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
* 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™.