Is there anyway I can load a shared library into shared memory in a process so that some other process can simply map that shared memory (to the same address) and simply invoke functions? I understand that the external in the shared library need to have an additional jump into process-specific memory locations to call into appropriate functions (like elf plt). But, is such a thing viable with today's tools.
Related Questions in DLL
- "android-22" can't be found in android SDK
- how to merge both cpp and js support in cocos2d to use via command prompt
- Mixing a CocosSharp game with UIViewControllers
- EXE_BAD_BADACCESS trying to access GKMatch?
- Adding new methods to Cocos2d-x SimpleAudioEngine
- gamesalad to unity3D?
- Cocos2D: Recognize multiple tiles next to each other
- cocos2d-js draw circle not instantly
- Xcode 6: Semantic issues while compiling cocos2d-x project
- Static linking error when compiling myGame in Cocos2d-x v3.6
Related Questions in SHARED-LIBRARIES
- "android-22" can't be found in android SDK
- how to merge both cpp and js support in cocos2d to use via command prompt
- Mixing a CocosSharp game with UIViewControllers
- EXE_BAD_BADACCESS trying to access GKMatch?
- Adding new methods to Cocos2d-x SimpleAudioEngine
- gamesalad to unity3D?
- Cocos2D: Recognize multiple tiles next to each other
- cocos2d-js draw circle not instantly
- Xcode 6: Semantic issues while compiling cocos2d-x project
- Static linking error when compiling myGame in Cocos2d-x v3.6
Related Questions in DYNAMIC-LINKING
- "android-22" can't be found in android SDK
- how to merge both cpp and js support in cocos2d to use via command prompt
- Mixing a CocosSharp game with UIViewControllers
- EXE_BAD_BADACCESS trying to access GKMatch?
- Adding new methods to Cocos2d-x SimpleAudioEngine
- gamesalad to unity3D?
- Cocos2D: Recognize multiple tiles next to each other
- cocos2d-js draw circle not instantly
- Xcode 6: Semantic issues while compiling cocos2d-x project
- Static linking error when compiling myGame in Cocos2d-x v3.6
Related Questions in DYNAMIC-LIBRARY
- "android-22" can't be found in android SDK
- how to merge both cpp and js support in cocos2d to use via command prompt
- Mixing a CocosSharp game with UIViewControllers
- EXE_BAD_BADACCESS trying to access GKMatch?
- Adding new methods to Cocos2d-x SimpleAudioEngine
- gamesalad to unity3D?
- Cocos2D: Recognize multiple tiles next to each other
- cocos2d-js draw circle not instantly
- Xcode 6: Semantic issues while compiling cocos2d-x project
- Static linking error when compiling myGame in Cocos2d-x v3.6
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Not with today's tools, nor ever.
Sure, if your shared library has completely self-contained functions, then it will work. But the moment your library references external data or functions, you will crash and burn.
I don't think you understand. Let's consider an example:
When this is built into a shared library on Linux, the result is:
and
So the question is: where will
jmpq *0x200a5a(%rip)
go in the second process. Answer: one of two places.If the first process has already called
malloc
(very likely), then thejmpq
will go to address ofmalloc
in the first process, which is exceedingly unlikely to be the address ofmalloc
in the second process, and more likely to be unmapped, or be in the middle of some data. Either way, you crash.If the first process has not yet called
malloc
, then thejmpq
in the second process will jump to address of the runtime loader (ld-linux.so.2
or similar on Linux,ld.so
on Solaris) resolver function. Again, that address is very unlikely to also be the address of the resolver in the second process, and if it's not, you crash.But it gets worse from here. If by some improbable magic you ended up actually calling
malloc
in the second process, thatmalloc
is itself very likely to crash, because it will try to use data structures it has set up previously, using memory obtained fromsbrk
ormmap
. These data structures are present in the first process, but not in the second, and so you crash again.