Skip to content

Commit 65c9707

Browse files
committed
add error log when tid depleted, and return correct errno when clone failed
1 parent ba105bc commit 65c9707

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

components/lwp/lwp_syscall.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -1832,6 +1832,7 @@ long _sys_clone(void *arg[])
18321832
rt_thread_t thread = RT_NULL;
18331833
rt_thread_t self = RT_NULL;
18341834
int tid = 0;
1835+
rt_err_t err;
18351836

18361837
unsigned long flags = 0;
18371838
void *user_stack = RT_NULL;
@@ -1935,6 +1936,8 @@ long _sys_clone(void *arg[])
19351936
rt_thread_startup(thread);
19361937
return (long)tid;
19371938
fail:
1939+
RT_ASSERT(err < 0);
1940+
19381941
lwp_tid_put(tid);
19391942
if (thread)
19401943
{
@@ -1944,7 +1947,7 @@ long _sys_clone(void *arg[])
19441947
{
19451948
lwp_ref_dec(lwp);
19461949
}
1947-
return GET_ERRNO();
1950+
return (long)err;
19481951
}
19491952

19501953
rt_weak long sys_clone(void *arg[])

components/lwp/lwp_tid.c

+6
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ int lwp_tid_get(void)
8888
current_tid = tid;
8989
}
9090
lwp_mutex_release_safe(&tid_lock);
91+
92+
if (tid <= 0)
93+
{
94+
LOG_W("resource TID exhausted.");
95+
}
96+
9197
return tid;
9298
}
9399

0 commit comments

Comments
 (0)