浏览代码

fix pthread_create return value with PTHREAD_EXPLICIT_SCHED

due to moved code, commit b8742f32602add243ee2ce74d804015463726899
inadvertently used the return value of __clone, rather than the return
value of SYS_sched_setscheduler in the new thread, to check whether it
needed to report failure. since a successful __clone returns the tid
of the new thread, which is never zero, this caused pthread_create
always to return with an invalid error number in the code path for
PTHREAD_EXPLICIT_SCHED.

this regression was not present in any releases.
Rich Felker 6 年之前
父节点
当前提交
91e1e29d6d
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. 1 0
      src/thread/pthread_create.c

+ 1 - 0
src/thread/pthread_create.c

@@ -306,6 +306,7 @@ int __pthread_create(pthread_t *restrict res, const pthread_attr_t *restrict att
 
 	if (do_sched) {
 		__futexwait(&ssa.futex, -1, 1);
+		ret = ssa.futex;
 		if (ret) return ret;
 	}