From e59f9a05b2f08f8abdea3500fa77e384aaf1d6dc Mon Sep 17 00:00:00 2001 From: "Edward V. Emelianov" Date: Tue, 12 Aug 2025 11:48:48 +0300 Subject: [PATCH] remove pthread_kill/pthread_cancel from `signals` (if thread wasn't run, these functions cause segfault) --- LibSidServo/examples/dump.c | 2 +- LibSidServo/examples/goto.c | 3 ++- LibSidServo/examples/scmd_traectory.c | 1 - LibSidServo/serial.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/LibSidServo/examples/dump.c b/LibSidServo/examples/dump.c index 61628b9..ed939eb 100644 --- a/LibSidServo/examples/dump.c +++ b/LibSidServo/examples/dump.c @@ -73,7 +73,7 @@ void logmnt(FILE *fcoords, mountdata_t *m){ } // write data fprintf(fcoords, "%12.6f %10.6f %10.6f %10.6f %10.6f %10.6f %10.6f %10u\n", - m->motXposition.t, RAD2DEG(m->motXposition.val), RAD2DEG(m->motYposition.val), + m->encXposition.t, RAD2DEG(m->motXposition.val), RAD2DEG(m->motYposition.val), RAD2DEG(m->encXposition.val), RAD2DEG(m->encYposition.val), RAD2DEG(m->encXspeed.val), RAD2DEG(m->encYspeed.val), m->millis); diff --git a/LibSidServo/examples/goto.c b/LibSidServo/examples/goto.c index 1038926..d5a4b3e 100644 --- a/LibSidServo/examples/goto.c +++ b/LibSidServo/examples/goto.c @@ -61,12 +61,13 @@ static FILE* fcoords = NULL; static pthread_t dthr; void signals(int sig){ - pthread_cancel(dthr); if(sig){ signal(sig, SIG_IGN); DBG("Get signal %d, quit.\n", sig); } + DBG("Quit"); Mount.quit(); + DBG("close"); if(fcoords) fclose(fcoords); exit(sig); } diff --git a/LibSidServo/examples/scmd_traectory.c b/LibSidServo/examples/scmd_traectory.c index 1f2bc2f..5643b5e 100644 --- a/LibSidServo/examples/scmd_traectory.c +++ b/LibSidServo/examples/scmd_traectory.c @@ -75,7 +75,6 @@ static sl_option_t cmdlnopts[] = { }; void signals(int sig){ - pthread_cancel(dthr); if(sig){ signal(sig, SIG_IGN); DBG("Get signal %d, quit.\n", sig); diff --git a/LibSidServo/serial.c b/LibSidServo/serial.c index 2728756..5f426cf 100644 --- a/LibSidServo/serial.c +++ b/LibSidServo/serial.c @@ -593,7 +593,7 @@ void closeSerial(){ DBG("close encoder's fd"); close(encfd[0]); encfd[0] = -1; - if(Conf.SepEncoder == 2){ + if(Conf.SepEncoder == 2 && encfd[1] > -1){ close(encfd[1]); encfd[1] = -1; }