You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by "Arliss, Noah" <na...@netegrity.com> on 2003/05/02 19:17:29 UTC

RE: [PATCH] HPUX static's and Mixing C with C++ modules

I've noticed that shl_load has been patched to remove BIND_NOSTART whihc is
fantastic. I was wondering if in addition to this change whether it was also
made possible to build apache 2.0 on HPUX in a way that forces it to use
dlopen instead of shl_load. As I mentioned below, I've been able to get
apache to run perfectly under this scenerio, but not with shl_load, even
with BIND_NOSTART removed. If there's a configuration script setting or some
way to override the default of shl_load that would be most useful.

Thanks,

Noah

-----Original Message-----
From: Arliss, Noah 
Sent: Friday, February 07, 2003 12:23 PM
To: 'William A. Rowe, Jr.'; dev@apr.apache.org; dev@httpd.apache.org
Cc: Arliss, Noah; ahuxley@gmx.net
Subject: RE: [PATCH] HPUX static's and Mixing C with C++ modules


I'll try to clarify things as best I can. First off, BIND_VERBOSE would be
fantastic. I had to add it in order to get my module to load at all with
shl_load, even though it still would not function. If there was a good
reason to remove BIND_VERBOSE that history would be nice to have. The
shl_load call would look better as: 

+ shl_t os_handle = shl_load(path, BIND_IMMEDIATE|BIND_VERBOSE, 0L); 

or

+ shl_t os_handle = shl_load(path, BIND_IMMEDIATE, 0L); 

at a minimum.

The contradiction with item 3 and 4 below stem from a strange stacktrace I
found for my apache 2.0 module. In apache 1.3 to get our module to run we
wrote a mod_so.c shim that did not have BIND_NOSTART in the shl_load line.
We use mod_so to load our shim, and then use the shim to load our module, so
for apache 1.3 removing BIND_NOSTART fixed the problem. In apache 2.0 I have
not yet had time to further trouble shoot the issue completely. A couple
weeks ago I was testing with the latest apache 2.0 source and ran into
trouble (with shl_load). I found a stack trace I saved away that appeared to
be in the static initialization phase of one of our third party
dependancies. I know I removed BIND_NOSTART from the apache 2.0 source, but
I haven't had time to further track it. I haven't completely lost hope of
getting my module to run under shl_load (since our 1.3 module does), but it
is a cost of time issue, especially with the more robust dlopen available
(on the HP platforms we support) and our major apache 2.0 dev effort already
completed.

As for the _main() issue, it should be up to the module author the more that
I think about it. According to the HP docs I included in my original post,
_main() should be called from the main() function of the C application, but
our 1.3 module calls it in the initializer phase and has been running
without problems. Is there a chance we could patch the apache 1.3 shl_load
call for BIND_NOSTART as well? If so I can get rid of my shim which would be
fantastic!

To sum it all up: The patch looks good, module developers should handle
_main, and dlopen would be really really nice to have.

Thanks again,

Noah

-----Original Message-----
From: William A. Rowe, Jr. [mailto:wrowe@rowe-clan.net]
Sent: Thursday, January 30, 2003 11:32 AM
To: dev@apr.apache.org; dev@httpd.apache.org
Cc: Arliss, Noah; ahuxley@gmx.net
Subject: [PATCH] HPUX static's and Mixing C with C++ modules


Of course I'm really happy to *finally* get some feedback on that issue
(since we have few HPUX participants here, my pleas for comments went
mostly unanswered.)

The small bit below deserves *instant* reaction; since it can be done with
very little extra logic.  It seems other issues with HPUX shl_load() were
identified earlier by Alexis and Joe (Joe follows this list so I didn't
explicitly
cc him above)  ...  for the resolution of BIND_VERBOSE read;

http://www.contactor.se/~dast/svn/archive-2002-12/0474.shtml

I'm hoping they can provide extra feedback on this patch.  [And, by the
way, I'm concerned that patch lost some useful diagnostics info 
- perhaps we should reenable BIND_VERBOSE for --maintainer-mode?]
Anyways...

An example thread of someone struggling here;

http://h21007.www2.hp.com/cxx-dev/CXX/cxx-dev.0203/0071.html

So... I'd ask you all to check out this patch (which seems very reasonable)
and let me know if you encounter any issues.

And Arliss... please give us some citations or reconciliation between the
two comments below (they seem contradictary);

At 09:43 AM 1/30/2003, Arliss, Noah wrote:
>3) shl_load does not like static initialization (even with BIND_NOSTART
>removed from the shl_load call).
>
>It would be great if one or more of the following changes could be made
>(mostly from Bill's attached mail):
>
>        4) Remove BIND_NOSTART from the bits set when calling shl_load
since
>that explicitly stops any static 
>           initialization. It would be great if I could get this one into
>both apache 1.3 and 2.0.

Note that this code has existed since rev 1.7 of apache-1.3/src/os/unix/os.c
and has never been touched since it was introduced...

Revision
<http://cvs.apache.org/viewcvs.cgi/*checkout*/apache-1.3/src/os/unix/os.c?re
v=1.7>1.7 /
<http://cvs.apache.org/viewcvs/apache-1.3/src/os/unix/os.c?rev=1.7&content-t
ype=text/vnd.viewcvs-markup>(view) -
<http://cvs.apache.org/viewcvs/apache-1.3/src/os/unix/os.c?annotate=1.7>anno
tate -
<http://cvs.apache.org/viewcvs/apache-1.3/src/os/unix/os.c?r1=1.7>[select
for diffs] , Sun Apr 12 15:49:28 1998 UTC (4 years, 9 months ago) by rse 
Branch:
<http://cvs.apache.org/viewcvs/apache-1.3/src/os/unix/os.c?only_with_tag=MAI
N>MAIN 
Changes since 1.6: +43 -0 lines 
Diff to
<http://cvs.apache.org/viewcvs/apache-1.3/src/os/unix/os.c.diff?r1=1.6&r2=1.
7>previous 1.6
(<http://cvs.apache.org/viewcvs/apache-1.3/src/os/unix/os.c.diff?r1=1.6&r2=1
.7&diff_format=h>colored) 


Although I though we have no chance under HP/UX for using shared objects I
today figured out that their proprietary shl_xxx system calls are very close
to the dlopen-style interface. And because our os/unix/ stuff already
provides
an abstraction layer we now can provide DSO support for HP/UX by emulating
the
dlopen-style interface while not changing anything inside mod_so ;-)



So I think we are safe adopting these changes.  The fact
that this code was only modified once (the VERBOSE change)
shows that the entire logic could stand a good vetting.

The next question to answer (after these patches are
applied) is who's job is it to call _main()?  I presume
that would be the module author's - if they desired it.
But I'm looking for additional feedback and thoughts.

Bill