Skip to content

Commit 49ae52a

Browse files
committed
Remove unused JL_HAVE_SIGALTSTACK code
Nothing is ever activating this, and it probably hasn't been tested in a while.
1 parent 78b6c57 commit 49ae52a

File tree

4 files changed

+4
-100
lines changed

4 files changed

+4
-100
lines changed

src/gc-stacks.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ static void *malloc_stack(size_t bufsz) JL_NOTSAFEPOINT
7676
if (stk == MAP_FAILED)
7777
return MAP_FAILED;
7878

79-
#if !defined(JL_HAVE_UCONTEXT) && !defined(JL_HAVE_SIGALTSTACK)
79+
#if !defined(JL_HAVE_UCONTEXT)
8080
// set up a guard page to detect stack overflow
8181
if (mprotect(stk, jl_guard_size, PROT_NONE) == -1) {
8282
munmap(stk, bufsz);

src/julia_threads.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ JL_DLLEXPORT int8_t jl_threadpoolid(int16_t tid) JL_NOTSAFEPOINT;
3131
// JL_HAVE_ASM && JL_HAVE_UNW_CONTEXT -- libunwind-based
3232
// JL_HAVE_UNW_CONTEXT -- libunwind-based
3333
// JL_HAVE_UCONTEXT -- posix standard API, requires syscall for resume
34-
// JL_HAVE_SIGALTSTACK -- requires several syscall for start, setjmp for resume
3534

3635
#ifdef _OS_WINDOWS_
3736
#define JL_HAVE_UCONTEXT
@@ -53,8 +52,7 @@ typedef struct {
5352
} jl_stack_context_t;
5453
#if !defined(JL_HAVE_UCONTEXT) && \
5554
!defined(JL_HAVE_ASM) && \
56-
!defined(JL_HAVE_UNW_CONTEXT) && \
57-
!defined(JL_HAVE_SIGALTSTACK)
55+
!defined(JL_HAVE_UNW_CONTEXT)
5856
#if (defined(_CPU_X86_64_) || defined(_CPU_X86_) || defined(_CPU_AARCH64_) || \
5957
defined(_CPU_ARM_) || defined(_CPU_PPC64_))
6058
#define JL_HAVE_ASM
@@ -70,7 +68,7 @@ typedef struct {
7068
#endif
7169
#endif
7270

73-
#if (!defined(JL_HAVE_UNW_CONTEXT) && defined(JL_HAVE_ASM)) || defined(JL_HAVE_SIGALTSTACK)
71+
#if !defined(JL_HAVE_UNW_CONTEXT) && defined(JL_HAVE_ASM)
7472
typedef jl_stack_context_t _jl_ucontext_t;
7573
#endif
7674
#pragma GCC visibility push(default)

src/stackwalk.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,8 +1151,6 @@ static void jl_rec_backtrace(jl_task_t *t) JL_NOTSAFEPOINT
11511151
#pragma message("jl_rec_backtrace not defined for ASM/SETJMP on unknown system")
11521152
(void)c;
11531153
#endif
1154-
#elif defined(JL_HAVE_SIGALTSTACK)
1155-
#pragma message("jl_rec_backtrace not defined for SIGALTSTACK")
11561154
#else
11571155
#pragma message("jl_rec_backtrace not defined for unknown task system")
11581156
#endif

src/task.c

Lines changed: 1 addition & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
15681476
jl_task_t *jl_init_root_task(jl_ptls_t ptls, void *stack_lo, void *stack_hi)
15691477
{

0 commit comments

Comments
 (0)