Raised This Month: $51 Target: $400
 12% 

[BUGS] Fatal Errors


  
 
 
Thread Tools Display Modes
evilspy
Member
Join Date: Jun 2004
Location: Finland
Old 08-11-2005 , 04:36  
#11

.. but gcc-3.x would generate faster code ;9
__________________
^^ ^^ ^^ ^^
Metamod-P
- http://metamod-p.sf.net/
evilspy is offline
evilspy
Member
Join Date: Jun 2004
Location: Finland
Old 08-11-2005 , 12:02  
#12

Quote:
Originally Posted by BAILOPAN
We already overload new/delete as part of the memory manager.
But it access STL (std::set_new_handler()).
__________________
^^ ^^ ^^ ^^
Metamod-P
- http://metamod-p.sf.net/
evilspy is offline
Anpheus
Senior Member
Join Date: Aug 2004
Old 08-12-2005 , 17:09  
#13

And why in particular would statically linking a single module with the STL cause problems so long as no STL classes it instantiates are required by another module?

Let's see, STL gets statically linked (as a library) or included into compilation with the DLL, every time compiler instantiates 'vector', the vector implementation is within the DLL. So if I create a vector<int>, it damn well better work because the code for creating the object is within the module.

So where does the problem arise?
Anpheus is offline
evilspy
Member
Join Date: Jun 2004
Location: Finland
Old 08-12-2005 , 17:35  
#14

Quote:
Originally Posted by Anpheus
So where does the problem arise?
RTLD_GLOBAL
__________________
^^ ^^ ^^ ^^
Metamod-P
- http://metamod-p.sf.net/
evilspy is offline
Anpheus
Senior Member
Join Date: Aug 2004
Old 08-12-2005 , 20:47  
#15

But, here's the deal...

Why is it so necessary for implementation data already included within the module to become shared with the AMXx core?

AMXx doesn't need to know what version of the STL you used unless it needs to use one of your STL objects and for some reason your version of the STL is incredibly... oh, wrong and somehow the vector doesn't consist of three pointers.
Anpheus is offline
BAILOPAN
Join Date: Jan 2004
Old 08-13-2005 , 01:54  
#16

what


hullu (as always) is correct. The issue isn't with modules specifically interacting with one another, it's got to do with ELF mapping global symbols into the process. In fact this is the current bug with the linux compiler build - the internal error() function in amxxsc32.so is overridden (erroneously) by an internal function in libc.so.6. Crash. Shared libraries on linux are a nightmare like no other.

Specifically, the test case was SourceMM statically compiled against one STL version and a plugin compiled against another. As shared libraries they could not be loaded at the same time because the symbol tables conflicted in a very weird way.

Hey, I didn't write ELF, don't look at me...
__________________
egg
BAILOPAN is offline
BAILOPAN
Join Date: Jan 2004
Old 08-17-2005 , 13:11  
#17

I've fixed the callfunc bug in CVS (as I thought, it was an error left over from the Pawn 3.0 merge).

I made some quick fixes to protect against weird module errors but the bug report wasn't detailed enough to help me understand the problem. If you wish, please start a new bug report that details the problem.

Thanks!

PS! I decided you cannot call "fake natives" by strings.
The reason is that they're not fake natives, they are actual natives, assembled at run time. Only the compiler knows how to generate the correct calling sequence for them, and writing a system to call natives would end up being an unnecessary duplicate of callfunc_*.

The register_native system is for creating natives.
The callfunc system is for making global callbacks.

Use them the right way!
__________________
egg
BAILOPAN is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 14:13.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode