Hi,

I'm trying to terminate a program from a child task. The idea is that a joinable child task kills itself, unblocking its parent which exits the application. However, the program crashes when the child calls rt_task_delete.

Inspecting the core file by gdb shows this:

Program terminated with signal 11, Segmentation fault.
#0  0xb7f014cd in pthread_cancel () from /lib/tls/i686/cmov/libpthread.so.0

A simple program which triggers the problem is attached. Is this a bug, or the API should not be used in this way ?

Thanks,

Tomas
#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>

#include <native/task.h>
#include <rtdk.h>

RT_TASK child;

void child_body(void *cookie) {
  int rc;
  
  fprintf(stderr,"In child..\n");

  rc=rt_task_delete(rt_task_self());
  if (rc!=0) {
    fprintf(stderr,"rt_task_delete returned %d\n");
  }

}

int main(int argc, char **argv) {

  int rc;
  
  mlockall(MCL_CURRENT|MCL_FUTURE);
  
  rc=rt_task_create(&child,"ovmtask",0,11,T_JOINABLE);  
  if (rc!=0) {
    fprintf(stderr,"rt_task_create returned %d\n");
  }  

  rc=rt_task_start(&child,&child_body,NULL);
  if (rc!=0) {
    fprintf(stderr,"rt_task_start returned %d\n");
  }  

  rc=rt_task_join(&child);
  if (rc!=0) {
    fprintf(stderr,"rt_task_join returned %d\n");
  }  
  
  return 0;
}
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to