Closed Bug 124211 Opened 23 years ago Closed 23 years ago

Runtime link failures on FreeBSD -- libpipnss.so Load FAILED with error: Cannot open "../../../../dist/lib/libsmime3.so"

Categories

(Core Graveyard :: Security: UI, defect, P1)

Other Branch
x86
FreeBSD
defect

Tracking

(Not tracked)

VERIFIED FIXED
psm2.2

People

(Reporter: KaiE, Assigned: KaiE)

References

Details

Attachments

(1 file, 2 obsolete files)

Jesup reported problems on FreeBSD. During startup, he sees
nsNativeComponentLoader:
SelfRegisterDll(/home/jesup/src/mozilla_work/mozilla/obj-i386-unknown-freebsd4.3/dist/bin/components/libpipnss.so)
Load FAILED with error: Cannot open "../../../../dist/lib/libsmime3.so"

We saw that our link commands for libpipnss.so are nearly identical on Linux and
FreeBSD. But we list the shared objects with relative pathnames (e.g.
../../../../dist/lib/libsmime3.so).

While that works on Linux, and the resulting libpipnss.so only has a reference
to a file named "libsmime3.so", the FreeBSD library includes that path, and when
started, tries to access that library using the relative patch - which does not
work.

The suggestion is to use the alternative link command in the form
  -lsmime3
instead. This works on Linux, too.

Does somebody know if this approach works on all UNIX variants?
It should; it would be quite weird for it not to (even more so than this bug).
CC'ing more people, FYI
Yes this will work on all unix variants... there is some
name issues with os/2 but Mike I think has taken care
of that in rules.mk or config.mk.

I had just noticed this also... the use of lib<blah>.so and
doing the "-L<dir> -l<blah>" is the preferred solution for
mozilla (and hopefully nss).  
Attached patch Suggested fix (obsolete) — Splinter Review
As we now have a difference between the link command and the list of dependent
libraries, a bigger changes was necessary.

Or can we simplify this patch more, because the -l<name> syntax will work on
gmake based builds on OS/2 and WINNT, too?
Kai,

I have to admit I noticed this too while reviewing
the NSS 3.4 landing patch and in fact I know this
is not portable.

I agree that "-L<dir> -l<blah>" is the right solution.
This will work for OS/2.  Once bug 114748 is checked in, we can also get rid of
NSS_LIB_PREFIX.
Comment on attachment 68354 [details] [diff] [review]
Suggested fix

r=rjesup@wgate.com for FreeBSD/Linux - it sounds like the OS/2 changes
mentioned are optional but perhaps should be done.  Let's PLEASE get this in
ASAP since this breaks BSD.  I imagine otaku would show red if it wasn't
missing from the ports tinderbox
Attachment #68354 - Flags: review+
Who should do additional review of the makefile changes, or can this go in?
Looks fine to me (other than that entire block should be moved to config.mk so
that this doesn't break in static builds).
I don't know how the static build system works. However, I thought this patch
will not break the static build, because the static build currently works, and
we have a separate definition of NSS_LIBS in config/config.mk, which has a
comment that says it is for the static build.
This patch won't break the existing non-FreeBSD static builds but it also
doesn't fix the relative link problem for FreeBSD static builds.  We should have
just a single NSS_LIBS definition that is used to link both PSM & the various
static build targets (mozilla-bin & embedding apps).
*** Bug 125524 has been marked as a duplicate of this bug. ***
Since this breaks BSD builds, raising priority.  We have a close-to-complete
patch....
Severity: normal → critical
Keywords: mozilla0.9.9, patch
changing summary so i can find this bug :-(
Summary: Runtime link failures on FreeBSD → Runtime link failures on FreeBSD -- libpipnss.so Load FAILED with error: Cannot open "../../../../dist/lib/libsmime3.so"
Kai, do you know how to fix this?
If not, work with the FreeBSD experts to produce a patch that will work.

We don't have a FreeBSD environment here.

We welcome a patch from anybody who has.
Stephane, Kai's patch is already mentioned
Created an attachment (id=68354)

This work on AIX (where we have a similar problem).
I am not sure what is holding this up from being
checked in.
The patch did fix things. but a recent checkin regarding nss target seemed to
break this patch.
This patch can be trivially applied to the trunk from examining it.  The only
change to the trunk  that affects this is changing NSS_LIB_PREFIX to LIB_PREFIX
on the crmf dependency line.  I'll post an updated patch.
Attached patch Updated patch (obsolete) — Splinter Review
Note: comments above say this may still not fix static builds.	I'll check into
that after this goes in.
Attachment #68354 - Attachment is obsolete: true
I just tried to pull the latest tree and apply the patch in attachment 69723 [details] [diff] [review] on
my FreeBSD system. This works just fine.
Cls would you sr=?
Kai can you review?
Priority: -- → P1
Target Milestone: --- → 2.2
Blocks: 123917
Much cleaner, thanks.  r=rjesup@wgate.com
Let's get this in!
Comment on attachment 69768 [details] [diff] [review]
Remove duplicate NSS_LIBS defines and handle static build case

This patch looks good.	I suggest one change.

In security/manager/ssl/src/Makefile.in:

>-NSS_3_4=1
>-
>-ifdef NSS_3_4
> DEFINES += -DNSS_3_4
>-

I suggest that we say, instead:

 NSS_3_4 = 1

 ifdef NSS_3_4
 DEFINES += -DNSS_3_4
+endif

This will make it clear that -DNSS_3_4 should also be
removed when we remove the non-NSS 3.4 code.
Attachment #69768 - Flags: needs-work+
The patch (with Wan-Teh's suggestion) has been checked in.  Marking fixed.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Verified.
Status: RESOLVED → VERIFIED
Product: PSM → Core
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: