Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
B
brpc
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
brpc
Commits
9627969d
Commit
9627969d
authored
7 years ago
by
gejun
Committed by
iCode
7 years ago
Browse files
Options
Browse Files
Download
Plain Diff
Merge "Patch svn r35212 r35213 & disable death test on calloc"
parents
dc706073
83a43254
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
48 additions
and
36 deletions
+48
-36
thread_local.cpp
src/base/thread_local.cpp
+4
-1
key.cpp
src/bthread/key.cpp
+2
-2
Makefile
test/Makefile
+11
-7
baidu_thread_local_unittest.cpp
test/baidu_thread_local_unittest.cpp
+25
-22
security_unittest.cc
test/security_unittest.cc
+6
-4
No files found.
src/base/thread_local.cpp
View file @
9627969d
...
...
@@ -76,7 +76,10 @@ static void helper_exit_global() {
}
static
void
make_thread_atexit_key
()
{
pthread_key_create
(
&
thread_atexit_key
,
delete_thread_exit_helper
);
if
(
pthread_key_create
(
&
thread_atexit_key
,
delete_thread_exit_helper
)
!=
0
)
{
fprintf
(
stderr
,
"Fail to create thread_atexit_key, abort
\n
"
);
abort
();
}
// If caller is not pthread, delete_thread_exit_helper will not be called.
// We have to rely on atexit().
atexit
(
helper_exit_global
);
...
...
This diff is collapsed.
Click to expand it.
src/bthread/key.cpp
View file @
9627969d
...
...
@@ -233,7 +233,7 @@ void return_keytable(bthread_keytable_pool_t* pool, KeyTable* kt) {
pool
->
free_keytables
=
kt
;
}
static
void
cleanup_pthread
(
void
*
)
{
static
void
cleanup_pthread
()
{
KeyTable
*
kt
=
tls_bls
.
keytable
;
if
(
kt
)
{
delete
kt
;
...
...
@@ -446,7 +446,7 @@ int bthread_setspecific(bthread_key_t key, void* data) __THROW {
}
if
(
!
bthread
::
tls_ever_created_keytable
)
{
bthread
::
tls_ever_created_keytable
=
true
;
CHECK_EQ
(
0
,
base
::
thread_atexit
(
bthread
::
cleanup_pthread
,
NULL
));
CHECK_EQ
(
0
,
base
::
thread_atexit
(
bthread
::
cleanup_pthread
));
}
}
return
kt
->
set_data
(
key
,
data
);
...
...
This diff is collapsed.
Click to expand it.
test/Makefile
View file @
9627969d
...
...
@@ -5,7 +5,6 @@ include ../config.mk
CPPFLAGS
=
-DBTHREAD_USE_FAST_PTHREAD_MUTEX
-D__const__
=
-D_GNU_SOURCE
-DUSE_SYMBOLIZE
-DNO_TCMALLOC
-D__STDC_FORMAT_MACROS
-D__STDC_LIMIT_MACROS
-D__STDC_CONSTANT_MACROS
CPPFLAGS
+=
-DUNIT_TEST
-Dprivate
=
public
-Dprotected
=
public
-DBVAR_NOT_LINK_DEFAULT_VARIABLES
CXXFLAGS
=
$(CPPFLAGS)
-g
-pipe
-Wall
-W
-fPIC
-fstrict-aliasing
-Wno-invalid-offsetof
-Wno-unused-parameter
-fno-omit-frame-pointer
-std
=
c++0x
CFLAGS
=
$(CPPFLAGS)
-g
-pipe
-Wall
-W
-fPIC
-fstrict-aliasing
-Wno-unused-parameter
-fno-omit-frame-pointer
#required by base/crc32.cc to boost performance for 10x
ifeq
($(shell
test
$(GCC_VERSION)
-ge
40400;
echo
$$?),0)
...
...
@@ -152,7 +151,7 @@ TEST_BINS = test_base test_bvar $(TEST_BTHREAD_SOURCES:.cpp=) $(TEST_BRPC_SOURCE
all
:
$(TEST_BINS)
.PHONY
:
clean
clean
:
clean_bins
clean
:
clean_bins
clean_dbg
@
echo
"Cleaning"
@
rm
-rf
$(TEST_BASE_OBJS)
$(TEST_BVAR_OBJS)
$(TEST_BTHREAD_OBJS)
\
$(TEST_BRPC_OBJS)
$(TEST_PROTO_OBJS)
...
...
@@ -161,12 +160,20 @@ clean:clean_bins
clean_bins
:
@
rm
-rf
$(TEST_BINS)
../libbrpc.dbg.a
:
.PHONY
:
clean_dbg
clean_dbg
:
@
$(MAKE)
-C
.. clean_debug
../libbrpc.dbg.a
:
FORCE
@
$(MAKE)
-C
.. libbrpc.dbg.a
FORCE
:
.PRECIOUS
:
%.o
test_base
:
$(TEST_BASE_OBJS) ../libbrpc.dbg.a
@
echo
"Linking
$@
"
@
$(CXX)
-o
$@
$(LIBPATHS)
-Xlinker
"-("
$^
-Wl
,-Bstatic
$(STATIC_LINKINGS)
-Wl
,-Bdynamic
-Xlinker
"-)"
$(DYNAMIC_LINKINGS)
$(CXX)
-o
$@
$(LIBPATHS)
-Xlinker
"-("
$^
-Wl
,-Bstatic
$(STATIC_LINKINGS)
-Wl
,-Bdynamic
-Xlinker
"-)"
$(DYNAMIC_LINKINGS)
test_bvar
:
$(TEST_BVAR_OBJS) ../libbrpc.dbg.a
@
echo
"Linking
$@
"
...
...
@@ -192,6 +199,3 @@ brpc_%_unittest:$(TEST_PROTO_OBJS) brpc_%_unittest.o ../libbrpc.dbg.a
@
echo
"Compiling
$@
"
@
$(CXX)
-c
$(HDRPATHS)
$(CXXFLAGS)
$<
-o
$@
%.o
:
%.c
@
echo
"Compiling
$@
"
@
$(CC)
-c
$(HDRPATHS)
$(CFLAGS)
$<
-o
$@
This diff is collapsed.
Click to expand it.
test/baidu_thread_local_unittest.cpp
View file @
9627969d
...
...
@@ -10,31 +10,28 @@ namespace {
BAIDU_THREAD_LOCAL
int
*
dummy
=
NULL
;
const
size_t
NTHREAD
=
8
;
bool
processed
[
NTHREAD
+
1
];
bool
deleted
[
NTHREAD
+
1
];
bool
register_check
=
false
;
static
bool
processed
[
NTHREAD
+
1
];
static
bool
deleted
[
NTHREAD
+
1
];
static
bool
register_check
=
false
;
struct
YellObj
{
static
int
nc
;
static
int
nd
;
YellObj
()
{
printf
(
"Created
\n
"
);
++
nc
;
}
~
YellObj
()
{
printf
(
"Destroyed
\n
"
);
++
nd
;
}
};
int
YellObj
::
nc
=
0
;
int
YellObj
::
nd
=
0
;
void
check_global_variable
()
{
ASSERT_TRUE
(
processed
[
NTHREAD
]);
ASSERT_TRUE
(
deleted
[
NTHREAD
]);
ASSERT_EQ
(
2
,
YellObj
::
nc
);
ASSERT_EQ
(
2
,
YellObj
::
nd
);
static
void
check_global_variable
()
{
EXPECT_TRUE
(
processed
[
NTHREAD
]);
EXPECT_TRUE
(
deleted
[
NTHREAD
]);
EXPECT_EQ
(
2
,
YellObj
::
nc
);
EXPECT_EQ
(
2
,
YellObj
::
nd
);
}
class
BaiduThreadLocalTest
:
public
::
testing
::
Test
{
...
...
@@ -42,7 +39,7 @@ protected:
BaiduThreadLocalTest
(){
if
(
!
register_check
)
{
register_check
=
true
;
atexit
(
check_global_variable
);
base
::
thread_
atexit
(
check_global_variable
);
}
};
virtual
~
BaiduThreadLocalTest
(){};
...
...
@@ -99,9 +96,8 @@ TEST_F(BaiduThreadLocalTest, get_thread_local) {
}
void
delete_dummy
(
void
*
arg
)
{
*
(
(
bool
*
)
arg
)
=
true
;
*
(
bool
*
)
arg
=
true
;
if
(
dummy
)
{
printf
(
"dummy(%p)=%d
\n
"
,
dummy
,
*
dummy
);
delete
dummy
;
dummy
=
NULL
;
}
else
{
...
...
@@ -112,6 +108,7 @@ void delete_dummy(void* arg) {
void
*
proc_dummy
(
void
*
arg
)
{
bool
*
p
=
(
bool
*
)
arg
;
*
p
=
true
;
EXPECT_TRUE
(
dummy
==
NULL
);
dummy
=
new
int
(
p
-
processed
);
base
::
thread_atexit
(
delete_dummy
,
deleted
+
(
p
-
processed
));
return
NULL
;
...
...
@@ -139,26 +136,32 @@ TEST_F(BaiduThreadLocalTest, sanity) {
}
}
std
::
stringstream
oss
;
static
std
::
ostringstream
*
oss
=
NULL
;
inline
std
::
ostringstream
&
get_oss
()
{
if
(
oss
==
NULL
)
{
oss
=
new
std
::
ostringstream
;
}
return
*
oss
;
}
void
fun1
()
{
oss
<<
"fun1"
<<
std
::
endl
;
get_oss
()
<<
"fun1"
<<
std
::
endl
;
}
void
fun2
()
{
oss
<<
"fun2"
<<
std
::
endl
;
get_oss
()
<<
"fun2"
<<
std
::
endl
;
}
void
fun3
(
void
*
arg
)
{
oss
<<
"fun3("
<<
arg
<<
")"
<<
std
::
endl
;
get_oss
()
<<
"fun3("
<<
arg
<<
")"
<<
std
::
endl
;
}
void
fun4
(
void
*
arg
)
{
oss
<<
"fun4("
<<
arg
<<
")"
<<
std
::
endl
;
get_oss
()
<<
"fun4("
<<
arg
<<
")"
<<
std
::
endl
;
}
void
check_result
()
{
ASSERT_EQ
(
"fun4(0)
\n
fun3(0x2)
\n
fun2
\n
"
,
oss
.
str
());
static
void
check_result
()
{
ASSERT_EQ
(
"fun4(0)
\n
fun3(0x2)
\n
fun2
\n
"
,
get_oss
()
.
str
());
}
TEST_F
(
BaiduThreadLocalTest
,
call_order_and_cancel
)
{
...
...
@@ -182,4 +185,4 @@ TEST_F(BaiduThreadLocalTest, call_order_and_cancel) {
base
::
thread_atexit_cancel
(
fun3
,
(
void
*
)
1
);
}
}
}
// namespace
This diff is collapsed.
Click to expand it.
test/security_unittest.cc
View file @
9627969d
...
...
@@ -228,10 +228,12 @@ TEST(SecurityTest, CallocOverflow) {
EXPECT_TRUE
(
CallocReturnsNull
(
kArraySize2
,
kArraySize
));
}
else
{
// It's also ok for calloc to just terminate the process.
#if defined(GTEST_HAS_DEATH_TEST)
EXPECT_DEATH
(
CallocReturnsNull
(
kArraySize
,
kArraySize2
),
""
);
EXPECT_DEATH
(
CallocReturnsNull
(
kArraySize2
,
kArraySize
),
""
);
#endif // GTEST_HAS_DEATH_TEST
// NOTE(gejun): base/process/memory.cc is not linked right now,
// disable following assertions on calloc
//#if defined(GTEST_HAS_DEATH_TEST)
// EXPECT_DEATH(CallocReturnsNull(kArraySize, kArraySize2), "");
// EXPECT_DEATH(CallocReturnsNull(kArraySize2, kArraySize), "");
//#endif // GTEST_HAS_DEATH_TEST
}
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment