dlclose on FreeBSD


 
Thread Tools Search this Thread
Top Forums Programming dlclose on FreeBSD
# 1  
Old 06-12-2003
Question dlclose on FreeBSD

Anyone knows how to use dynamic module loading through dlopen/dlsym/dlclose properly on FreeBSD?

I wrote a tiny program to learn KDE programming. Perhaps I give you a small snippet to look at

Code:
int IPTablesApp::Start(int argc, char* argv[]) {
	typedef void (*init_t)(int, char*[]);
	init_t init;
	void *view = dlopen("./libkde-plugin.so", RTLD_NOW);
	if (!view) {
		// error loading libraries
		fprintf(stderr, "Interface library load error: %s\n", dlerror());
		return -1;
	} else {
		init = (init_t)dlsym(view, "_Init");
		init(argc, argv);
	}
	dlclose(view);
	return 0;
}

The KDE app is in libkde-plugin.so and is not shown here. Basically, when the app ends and execute the dlclose, gdb catches a segmentation fault for "Bad Address".

The same code runs okay on my Linux. Anyone can tell me if my way of using dl- functions are correct and are there workarounds (I saw some similar apps just comment out the dlclose line, but I don't know if this is proper or not)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Fedora

FreeBSD

I'm using Windows mostly and the only *nix thing I used during my life was cygwin (I like command line :)). But currently I have (by an occasion) a DVD with latest FreeBSD. I don't know why, but I want to install it... But probably, this OS is too difficult for a beginner. I heard, it's used on... (3 Replies)
Discussion started by: TeenageWerewolf
3 Replies

2. Programming

Application crashes in FreeBSD 7.1 while working ok in FreeBSD 6.3

Hello there, My mulithreaded application (which is too large to represent the source code here) is crashing after installing FreeBSD 7.1-RELEASE/amd64. It worked properly on others machines (Dual Cores with 4GB of RAM - FreeBSD 6.2-RELEASE/i386). The current machine has 2x Core 2 Duo... (1 Reply)
Discussion started by: Seenquev
1 Replies

3. Programming

dlclose crashing in 64bit

Hi I have a 64bit C++ dynamic component built using Sun Forte compiler(CC) on one server. I am opening this shared component using dlopen and checking if a particular function is defined or not. After that, when I am closing the component using dlclose, the program is crashing. The... (3 Replies)
Discussion started by: ajphaj
3 Replies

4. BSD

please help me in FreeBSD

Hi to all, Iam doing a project in Free BSD and i am stuck with a puzzle. Please any one of you clarify my doubt : How to add a mechanism to check the status of the file system which alerts the root user via. email if any single partition is greater than 90% full. This alert should include the... (3 Replies)
Discussion started by: tadakamalla
3 Replies

5. BSD

I want the Best FREEBSD

B]I want the best of the best FreeBSD version for my study in Unix...please sugest me... Thanks (5 Replies)
Discussion started by: israel
5 Replies

6. BSD

FreeBSD 5.2.1

I want someone tell me the positives and negatives points of FreeBSD 5.2.1, if someone help me, i thanks a lot! (4 Replies)
Discussion started by: israel
4 Replies

7. UNIX for Dummies Questions & Answers

FreeBSD

What is FreeBSD, who does use Free? (3 Replies)
Discussion started by: cyberangel
3 Replies

8. UNIX for Dummies Questions & Answers

Freebsd 4.5

i am new at unix and am VERY confused about the compression processes. what progs do i need to unzip and zip files? there must be a standard one similar to winzip? (1 Reply)
Discussion started by: Mindscan
1 Replies

9. UNIX for Dummies Questions & Answers

FreeBSD

I am on AOL now,and i am using 56 k,i was gonna install FreeBSD,but i dont know if aol works on BSD,or my modem. Do they work on BSD? (2 Replies)
Discussion started by: kita
2 Replies

10. UNIX for Dummies Questions & Answers

need help with FreeBSD!!!

Hi I want to write to my output_file using: if((fptr = creat(output_file, _S_IWRITE)) == -1) { printf("output_file..."..); return (1); } for(...) { _write(fptr, buffer, BUF_SIZE); } It says "_S_IWRITE" undeclared!!! Anybody knows what function I can use for that and what I... (3 Replies)
Discussion started by: lacasa
3 Replies
Login or Register to Ask a Question
DLCLOSE(3P)						     POSIX Programmer's Manual						       DLCLOSE(3P)

PROLOG
This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may differ (consult the correspond- ing Linux manual page for details of Linux behavior), or the interface may not be implemented on Linux. NAME
dlclose - close a dlopen object SYNOPSIS
#include <dlfcn.h> int dlclose(void *handle); DESCRIPTION
The dlclose() function shall inform the system that the object referenced by a handle returned from a previous dlopen() invocation is no longer needed by the application. The use of dlclose() reflects a statement of intent on the part of the process, but does not create any requirement upon the implementa- tion, such as removal of the code or symbols referenced by handle. Once an object has been closed using dlclose() an application should assume that its symbols are no longer available to dlsym(). All objects loaded automatically as a result of invoking dlopen() on the refer- enced object shall also be closed if this is the last reference to it. Although a dlclose() operation is not required to remove structures from an address space, neither is an implementation prohibited from doing so. The only restriction on such a removal is that no object shall be removed to which references have been relocated, until or unless all such references are removed. For instance, an object that had been loaded with a dlopen() operation specifying the RTLD_GLOBAL flag might provide a target for dynamic relocations performed in the processing of other objects-in such environments, an application may assume that no relocation, once made, shall be undone or remade unless the object requiring the relocation has itself been removed. RETURN VALUE
If the referenced object was successfully closed, dlclose() shall return 0. If the object could not be closed, or if handle does not refer to an open object, dlclose() shall return a non-zero value. More detailed diagnostic information shall be available through dlerror(). ERRORS
No errors are defined. The following sections are informative. EXAMPLES
The following example illustrates use of dlopen() and dlclose(): ... /* Open a dynamic library and then close it ... */ #include <dlfcn.h> void *mylib; int eret; mylib = dlopen("mylib.so", RTLD_LOCAL | RTLD_LAZY); ... eret = dlclose(mylib); ... APPLICATION USAGE
A conforming application should employ a handle returned from a dlopen() invocation only within a given scope bracketed by the dlopen() and dlclose() operations. Implementations are free to use reference counting or other techniques such that multiple calls to dlopen() referenc- ing the same object may return the same object for handle. Implementations are also free to reuse a handle. For these reasons, the value of a handle must be treated as an opaque object by the application, used only in calls to dlsym() and dlclose(). RATIONALE
None. FUTURE DIRECTIONS
None. SEE ALSO
dlerror(), dlopen(), dlsym(), the Base Definitions volume of IEEE Std 1003.1-2001, <dlfcn.h> COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol- ogy -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html . IEEE
/The Open Group 2003 DLCLOSE(3P)