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

'try' 'cath' not work


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
client21
Senior Member
Join Date: Apr 2013
Old 12-07-2017 , 13:42   'try' 'cath' not work
Reply With Quote #1

Debian 7 (g++)
When i compile for 'css' or 'csgo' engine - it work, i see this:
1
2
3
4
5
6

But when i compile for 'original' i see this:
1
2
3

Code:

PHP Code:
bool MyClass::SDK_OnLoad(char *errorsize_t maxlengthbool late)
{
    try { throw(
1); }
    catch (...)
    {
        
g_pSM->LogError(myself"1");
        try { throw(
1); }
        catch (...)
        {
            
g_pSM->LogError(myself"2");
            try { throw(
1); }
            catch (...)
            {
                
g_pSM->LogError(myself"3");
            }
            
g_pSM->LogError(myself"4");
        }
        
g_pSM->LogError(myself"5");
    }
    
g_pSM->LogError(myself"6");
    return 
true;

Makefile:

PHP Code:
# (C)2004-2010 SourceMod Development Team
# Makefile written by David "BAILOPAN" Anderson

########################################### sdkcss
### EDIT THESE PATHS FOR YOUR OWN SETUP ### hl2sdk-csgo
########################################### sdk2014css+csgo  source-sdk-2013
# engine: "csgo, left4dead2, left4dead, css, orangeboxvalve, orangebox, or original"
# make ENGINE=css -f Makefile

#####################################
### EDIT BELOW FOR OTHER PROJECTS ###
#####################################

PROJECT proj
OBJECTS 
main.cpp
USEMETA 
false

#
SMSDK = /root/ext/sdk_alliedmodders/sourcemod
MMSOURCE19 
= /root/ext/sdk_alliedmodders/mmsource

HL2SDK_CSGO 
= /root/ext/sdk_alliedmodders/hl2sdk-csgo
HL2SDK_CSS 
= /root/ext/sdk_alliedmodders/hl2sdk-css
HL2SDK_ORIG 
= /root/ext/sdk_alliedmodders/hl2sdk-episode1
#

#HL2SDK_OB = ../../../hl2sdk-ob
#HL2SDK_OB_VALVE = ../../../hl2sdk-ob-valve
#HL2SDK_L4D = ../../../hl2sdk-l4d
#HL2SDK_L4D2 = ../../../hl2sdk-l4d2

##############################################
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
##############################################

C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -pipe -fno-strict-aliasing
C_DEBUG_FLAGS 
= -D_DEBUG -DDEBUG --ggdb3
C_GCC4_FLAGS 
= -fvisibility=hidden
CPP_GCC4_FLAGS 
= -fvisibility-inlines-hidden
# g++ gcc
CPP g++
CPP_OSX clang

##########################
### SDK CONFIGURATIONS ###
##########################

override ENGSET false

# Check for valid list of engines
ifneq (,$(filter original orangebox orangeboxvalve css left4dead left4dead2 csgo,$(ENGINE)))
    
override ENGSET true
endif

ifeq "$(ENGINE)" "original"
    
HL2SDK = $(HL2SDK_ORIG)
    
CFLAGS += -DSOURCE_ENGINE=1
endif
ifeq "$(ENGINE)" "orangebox"
    
HL2SDK = $(HL2SDK_OB)
    
CFLAGS += -DSOURCE_ENGINE=3
endif
ifeq "$(ENGINE)" "css"
    
HL2SDK = $(HL2SDK_CSS)
    
CFLAGS += -DSOURCE_ENGINE=6
endif
ifeq "$(ENGINE)" "orangeboxvalve"
    
HL2SDK = $(HL2SDK_OB_VALVE)
    
CFLAGS += -DSOURCE_ENGINE=7
endif
ifeq "$(ENGINE)" "left4dead"
    
HL2SDK = $(HL2SDK_L4D)
    
CFLAGS += -DSOURCE_ENGINE=8
endif
ifeq "$(ENGINE)" "left4dead2"
    
HL2SDK = $(HL2SDK_L4D2)
    
CFLAGS += -DSOURCE_ENGINE=9
endif
ifeq "$(ENGINE)" "csgo"
    
HL2SDK = $(HL2SDK_CSGO)
    
CFLAGS += -DSOURCE_ENGINE=12
endif

HL2PUB = $(HL2SDK)/public

ifeq "$(ENGINE)" "original"
    
INCLUDE += -I$(HL2SDK)/public/dlls
    METAMOD 
= $(MMSOURCE19)/core-legacy
else
    INCLUDE += -
I$(HL2SDK)/public/game/server
    METAMOD 
= $(MMSOURCE19)/core
endif

OS := $(shell uname -s)

ifeq "$(OS)" "Darwin"
    
LIB_EXT dylib
    HL2LIB 
= $(HL2SDK)/lib/mac
else
    
LIB_EXT so
    ifeq 
"$(ENGINE)" "original"
        
HL2LIB = $(HL2SDK)/lib/linux
    
else
        
HL2LIB = $(HL2SDK)/lib/linux
    
endif
endif

# if ENGINE is original or OB
ifneq (,$(filter original orangebox,$(ENGINE)))
    
LIB_SUFFIX _i486.$(LIB_EXT)
else
    
LIB_PREFIX lib
    LIB_SUFFIX 
= .$(LIB_EXT)
endif

ifneq (,$(filter css orangeboxvalve left4dead2,$(ENGINE)))
    
LIB_SUFFIX _srv.$(LIB_EXT)
endif


INCLUDE += -
I. -I.. -I$(SMSDK) -I$(SMSDK)/sourcepawn -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn


ifeq 
"$(USEMETA)" "true"
    
LINK_HL2 = $(HL2LIB)/tier1_i486.$(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX)
    
ifeq "$(ENGINE)" "csgo"
        
LINK_HL2 += $(HL2LIB)/interfaces_i486.a
    
endif

    
LINK += $(LINK_HL2)

    INCLUDE += -
I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 -I$(METAMOD) \
        -
I$(METAMOD)/sourcehook 
    CFLAGS 
+= -DSE_EPISODEONE=-DSE_DARKMESSIAH=-DSE_ORANGEBOX=-DSE_BLOODYGOODTIME=-DSE_EYE=\
        -
DSE_CSS=-DSE_ORANGEBOXVALVE=-DSE_LEFT4DEAD=-DSE_LEFT4DEAD2=-DSE_ALIENSWARM=10 \
        -
DSE_PORTAL2=11 -DSE_CSGO=12
endif

LINK += -m32 -lm -ldl

#  -Werror
CFLAGS += -DPOSIX -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
    -
D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -DCOMPILER_GCC -Wall \
    -
Wno-overloaded-virtual -Wno-switch -Wno-unused -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32 -fexceptions

# -fno-exceptions
CPPFLAGS += -Wno-non-virtual-dtor -fno-rtti -fexceptions -std=c++11

################################################
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
################################################

BINARY = $(PROJECT).ext.$(LIB_EXT)

ifeq "$(DEBUG)" "true"
    
BIN_DIR Debug
    CFLAGS 
+= $(C_DEBUG_FLAGS)
else
    
BIN_DIR Release
    CFLAGS 
+= $(C_OPT_FLAGS)
endif

ifeq "$(USEMETA)" "true"
    
BIN_DIR := $(BIN_DIR).$(ENGINE)
endif

ifeq "$(OS)" "Darwin"
    
CPP = $(CPP_OSX)
    
LIB_EXT dylib
    CFLAGS 
+= -DOSX -D_OSX
    LINK 
+= -dynamiclib -lstdc++ -mmacosx-version-min=10.5
else
    
LIB_EXT so
    CFLAGS 
+= -D_LINUX
    LINK 
+= -shared
endif

IS_CLANG := $(shell $(CPP) --version head -grep clang > /dev/null && echo "1" || echo "0")

ifeq "$(IS_CLANG)" "1"
    
CPP_MAJOR := $(shell $(CPP) --version grep clang sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/")
    
CPP_MINOR := $(shell $(CPP) --version grep clang sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/")
else
    
CPP_MAJOR := $(shell $(CPP) -dumpversion >&cut -b1)
    
CPP_MINOR := $(shell $(CPP) -dumpversion >&cut -b3)
endif

# If not clang
ifeq "$(IS_CLANG)" "0"
    
CFLAGS += -mfpmath=sse
endif

# Clang || GCC >= 4
ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1"
    
CFLAGS += $(C_GCC4_FLAGS)
    
CPPFLAGS += $(CPP_GCC4_FLAGS)
endif

# Clang >= 3 || GCC >= 4.7
ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1"
    
CFLAGS += -Wno-delete-non-virtual-dtor
endif

# OS is Linux and not using clang
ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1"
    
LINK += -static-libgcc
endif

OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)

# This will break if we include other Makefiles, but is fine for now. It allows
#  us to make a copy of this file that uses altered paths (ie. Makefile.mine)
#  or other changes without mucking up the original.
MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))

$(
BIN_DIR)/%.o: %.cpp
    
$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -$@ -$<

allcheck
    mkdir 
-$(BIN_DIR)/sdk
    mkdir 
-$(BIN_DIR)/CDetour
    mkdir 
-$(BIN_DIR)/asm
    
if [ "$(USEMETA)" "true" ]; then \
        
ln -sf $(HL2LIB)/$(LIB_PREFIX)vstdlib$(LIB_SUFFIX); \
        
ln -sf $(HL2LIB)/$(LIB_PREFIX)tier0$(LIB_SUFFIX); \
    
fi
    
$(MAKE) -$(MAKEFILE_NAMEextension

check
:
    if [ 
"$(USEMETA)" "true" ] && [ "$(ENGSET)" "false" ]; then \
        echo 
"You must supply one of the following values for ENGINE:"; \
        echo 
"csgo, left4dead2, left4dead, css, orangeboxvalve, orangebox, or original"; \
        exit 
1; \
    
fi

extension
check $(OBJ_BIN)
    $(
CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -$(BIN_DIR)/$(BINARY)

debug:
    $(
MAKE) -$(MAKEFILE_NAMEall DEBUG=true

default: all

clean
check
    rm 
-rf $(BIN_DIR)/*.o
    rm -rf $(BIN_DIR)/sdk/*.o
    rm -rf $(BIN_DIR)/CDetour/*.o
    rm -rf $(BIN_DIR)/asm/*.o
    rm -rf $(BIN_DIR)/$(BINARY) 

Last edited by client21; 12-07-2017 at 13:46.
client21 is offline
client21
Senior Member
Join Date: Apr 2013
Old 12-07-2017 , 19:40   Re: 'try' 'cath' not work
Reply With Quote #2

Omg, even this not work:

PHP Code:
bool MyClass::SDK_OnLoad(char *errorsize_t maxlengthbool late)
{
    try { throw(
1); }
    catch (...)
    {
        
g_pSM->LogError(myself"1");
        goto 
stop;
    }
    
stop:
    
g_pSM->LogError(myself"2");
    return 
true;

Result:

Code:
1
Because it old server version or why? idk..

Last edited by client21; 12-07-2017 at 19:42.
client21 is offline
client21
Senior Member
Join Date: Apr 2013
Old 12-09-2017 , 16:09   Re: 'try' 'cath' not work
Reply With Quote #3

Last 'catch' block = server crash // why?
client21 is offline
client21
Senior Member
Join Date: Apr 2013
Old 12-09-2017 , 17:16   Re: 'try' 'cath' not work
Reply With Quote #4

PHP Code:
bool MyClass::SDK_OnLoad(char *errorsize_t maxlengthbool late)
{
    try
    {
        
g_pSM->LogError(myself"1");
        
char c[1];
        
sprintf(c"12345");
        
c[4294967297] = 5;
        
g_pSM->LogError(myself"2");
    }
    catch(...)
    {
        
g_pSM->LogError(myself"3");
    }
    
g_pSM->LogError(myself"4");
    return 
true;

result:
1

Even 'catch' not called. Stupid world.

Last edited by client21; 12-09-2017 at 17:16.
client21 is offline
Reply


Thread Tools
Display Modes

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 13:54.


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