@@ -272,7 +272,7 @@ JL_NO_ASAN static void restore_stack2(jl_task_t *t, jl_ptls_t ptls, jl_task_t *l
272272        return ;
273273    if  (r  !=  0  ||  returns  !=  1 )
274274        abort ();
275- #elif  defined(JL_HAVE_ASM ) ||  defined(JL_HAVE_SIGALTSTACK )  ||  defined( _OS_WINDOWS_ )
275+ #elif  defined(JL_HAVE_ASM ) ||  defined(_OS_WINDOWS_ )
276276    if  (jl_setjmp (lastt -> ctx .copy_ctx .uc_mcontext , 0 ))
277277        return ;
278278#else 
@@ -1472,98 +1472,6 @@ JL_NO_ASAN static void jl_start_fiber_set(jl_ucontext_t *t)
14721472}
14731473#endif 
14741474
1475- #if  defined(JL_HAVE_SIGALTSTACK )
1476- #if  defined(_COMPILER_TSAN_ENABLED_ )
1477- #error  TSAN support not currently implemented for this tasking model
1478- #endif 
1479- 
1480- static  void  start_basefiber (int  sig )
1481- {
1482-     jl_ptls_t  ptls  =  jl_current_task -> ptls ;
1483-     if  (jl_setjmp (ptls -> base_ctx .uc_mcontext , 0 ))
1484-         start_task (); // sanitizer_finish_switch_fiber is part of start_task 
1485- }
1486- static  char  * jl_alloc_fiber (_jl_ucontext_t  * t , size_t  * ssize , jl_task_t  * owner )
1487- {
1488-     stack_t  uc_stack , osigstk ;
1489-     struct  sigaction  sa , osa ;
1490-     sigset_t  set , oset ;
1491-     void  * stk  =  jl_malloc_stack (ssize , owner );
1492-     if  (stk  ==  NULL )
1493-         return  NULL ;
1494-     // setup 
1495-     jl_ptls_t  ptls  =  jl_current_task -> ptls ;
1496-     _jl_ucontext_t  base_ctx ;
1497-     memcpy (& base_ctx , & ptls -> base_ctx , sizeof (base_ctx ));
1498-     sigfillset (& set );
1499-     if  (pthread_sigmask (SIG_BLOCK , & set , & oset ) !=  0 ) {
1500-        jl_free_stack (stk , * ssize );
1501-        jl_error ("pthread_sigmask failed" );
1502-     }
1503-     uc_stack .ss_sp  =  stk ;
1504-     uc_stack .ss_size  =  * ssize ;
1505-     uc_stack .ss_flags  =  0 ;
1506-     if  (sigaltstack (& uc_stack , & osigstk ) !=  0 ) {
1507-        jl_free_stack (stk , * ssize );
1508-        jl_error ("sigaltstack failed" );
1509-     }
1510-     memset (& sa , 0 , sizeof (sa ));
1511-     sigemptyset (& sa .sa_mask );
1512-     sa .sa_handler  =  start_basefiber ;
1513-     sa .sa_flags  =  SA_ONSTACK ;
1514-     if  (sigaction (SIGUSR2 , & sa , & osa ) !=  0 ) {
1515-        jl_free_stack (stk , * ssize );
1516-        jl_error ("sigaction failed" );
1517-     }
1518-     // emit signal 
1519-     pthread_kill (pthread_self (), SIGUSR2 ); // initializes jl_basectx 
1520-     sigdelset (& set , SIGUSR2 );
1521-     sigsuspend (& set );
1522-     // cleanup 
1523-     if  (sigaction (SIGUSR2 , & osa , NULL ) !=  0 ) {
1524-        jl_free_stack (stk , * ssize );
1525-        jl_error ("sigaction failed" );
1526-     }
1527-     if  (osigstk .ss_size  <  MINSTKSZ  &&  (osigstk .ss_flags  | SS_DISABLE ))
1528-        osigstk .ss_size  =  MINSTKSZ ;
1529-     if  (sigaltstack (& osigstk , NULL ) !=  0 ) {
1530-        jl_free_stack (stk , * ssize );
1531-        jl_error ("sigaltstack failed" );
1532-     }
1533-     if  (pthread_sigmask (SIG_SETMASK , & oset , NULL ) !=  0 ) {
1534-        jl_free_stack (stk , * ssize );
1535-        jl_error ("pthread_sigmask failed" );
1536-     }
1537-     if  (& ptls -> base_ctx  !=  t ) {
1538-         memcpy (& t , & ptls -> base_ctx , sizeof (base_ctx ));
1539-         memcpy (& ptls -> base_ctx , & base_ctx , sizeof (base_ctx )); // restore COPY_STACKS context 
1540-     }
1541-     return  (char * )stk ;
1542- }
1543- static  void  jl_start_fiber_set (jl_ucontext_t  * t ) {
1544-     jl_longjmp (t -> ctx .uc_mcontext , 1 ); // (doesn't return) 
1545- }
1546- static  void  jl_start_fiber_swap (jl_ucontext_t  * lastt , jl_ucontext_t  * t )
1547- {
1548-     assert (lastt );
1549-     if  (lastt  &&  jl_setjmp (lastt -> ctx .uc_mcontext , 0 ))
1550-         return ;
1551-     tsan_switch_to_ctx (t );
1552-     jl_start_fiber_set (t );
1553- }
1554- static  void  jl_swap_fiber (jl_ucontext_t  * lastt , jl_ucontext_t  * t )
1555- {
1556-     if  (jl_setjmp (lastt -> ctx .uc_mcontext , 0 ))
1557-         return ;
1558-     tsan_switch_to_ctx (t );
1559-     jl_start_fiber_set (t ); // doesn't return 
1560- }
1561- static  void  jl_set_fiber (jl_ucontext_t  * t )
1562- {
1563-     jl_longjmp (t -> ctx .uc_mcontext , 1 );
1564- }
1565- #endif 
1566- 
15671475// Initialize a root task using the given stack. 
15681476jl_task_t  * jl_init_root_task (jl_ptls_t  ptls , void  * stack_lo , void  * stack_hi )
15691477{
0 commit comments