I am currently working with cygwin, my sources are compiled with gcc -mno-cygwin (thats mingw). I wanted to test our huge project with objc and gnustep-base linked as a shared DLL. When I run it from my console everything seems to be okay, but when I try to debug it using gdb 5.0 (i686-pc-cygwin), I get a SIGSEGV fault even before main() is invoked: Program received signal SIGSEGV, Segmentation fault. 0x67bc867d in sarray_free () When I use objc_d (the objc-library including debug info), I can see, that the error occurs when the Objective-C runtime loads and registers all the classes and their methods of our project (loading of gnustep-base classes has been successful). However, I get this error only when using Windows 2000. On Windows NT 4.0 everything runs fine. I can even shift the place where the error occurs, I just have to change the compilation order of my source files. The error occurs in sarray_free() 384 void - 385 sarray_free(struct sarray* array) { 386 387 #ifdef OBJC_SPARSE3 388 size_t old_max_index = (array->capacity-1)/INDEX_CAPACITY; 389 struct sindex ** old_indices; 390 #else - 391 size_t old_max_index = (array->capacity-1)/BUCKET_SIZE; 392 struct sbucket ** old_buckets; 393 #endif 394 int counter = 0; 395 - 396 assert(array->ref_count != 0); /* Freed multiple times!!! */ 397 - 398 if(--(array->ref_count) != 0) /* There exists copies of me */ 399 return; 400 401 #ifdef OBJC_SPARSE3 402 old_indices = array->indices; 403 #else 404 old_buckets = array->buckets; 405 #endif 406 - 407 if((array->is_copy_of) && ((array->is_copy_of->ref_count - 1) == 0)) - 408 sarray_free(array->is_copy_of); 409 410 /* Free all entries that do not point to empty_bucket */ - 411 for(counter = 0; counter <= old_max_index; counter++ ) { 412 #ifdef OBJC_SPARSE3 413 struct sindex* idx = old_indices[counter]; 414 if((idx != array->empty_index) && 415 (idx->version.version == array->version.version)) { 416 int c2; 417 for(c2=0; c2<INDEX_SIZE; c2++) { 418 struct sbucket* bkt = idx->buckets[c2]; 419 if((bkt != array->empty_bucket) && 420 (bkt->version.version == array->version.version)) 421 { 422 sarray_free_garbage(bkt); 423 nbuckets -= 1; 424 } 425 } 426 sarray_free_garbage(idx); 427 nindices -= 1; 428 } 429 #else /* OBJC_SPARSE2 */ - 430 struct sbucket* bkt = array->buckets[counter]; - 431 if ((bkt != array->empty_bucket) && 432 (bkt->version.version == array->version.version)) // <-- btk->version.version => Access violation 433 { - 434 sarray_free_garbage(bkt); - 435 nbuckets -= 1; - 436 } 437 #endif - 438 } 439 440 #ifdef OBJC_SPARSE3 441 /* free empty_index */ 442 if(array->empty_index->version.version == array->version.version) { 443 sarray_free_garbage(array->empty_index); 444 nindices -= 1; 445 } 446 #endif 447 448 /* free empty_bucket */ - 449 if(array->empty_bucket->version.version == array->version.version) { - 450 sarray_free_garbage(array->empty_bucket); - 451 nbuckets -= 1; - 452 } - 453 idxsize -= (old_max_index+1); - 454 narrays -= 1; 455 456 #ifdef OBJC_SPARSE3 457 /* free bucket table */ 458 sarray_free_garbage(array->indices); 459 460 #else 461 /* free bucket table */ - 462 sarray_free_garbage(array->buckets); 463 464 #endif 465 466 /* free array */ - 467 sarray_free_garbage(array); - 468 } 469 _______________________________________________ Bug-gdb mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-gdb