Segmentation violation in nested functions with kernel 1.35

Vincent De Groote vincent.degroote at encelade.be
Wed Jun 29 08:10:57 UTC 2005


Hello,

I've just switched from kernel 2.6.11_1.27_FC3 to 2.6.11_1.35_FC3.
The following program makes a segmentation violation when I use the new
kernel.  When I switch back to the previous one, the program runs
without problems.

The problem occurs when the callback function is called (in
process_datas function).  Calling such a nested function should be ok,
when I read the gcc documentation.

Did I miss something ?
Thanks for your help.



#include <stdio.h>

struct context_t {
  int (*write_callback) ( FILE * output, char * buffer );
};

int process_datas ( struct context_t * context ) {

  return (  context->write_callback ( stdout, "write call back
datas" ));

}

int test ( void ) {

  struct context_t  context;

  int write_callback ( FILE * output, char * buffer ) {

    return (fprintf ( output, "%s\n", buffer ));
    
  }

  context.write_callback = write_callback;

  return (process_datas ( &context ));
 
}

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

  printf ("test result = %d\n", test());
  return (0);

}




More information about the fedora-list mailing list