• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Threading and Synchronization in Mass storage driver
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Threading and Synchronization in Mass storage driver


  • Subject: Re: Threading and Synchronization in Mass storage driver
  • From: Yogesh P <email@hidden>
  • Date: 16 Dec 2005 19:19:35 +0530

Hi Herb,

I have setup a 2 machine debugging to trace out the exact cause of the
crash while using the IOLockSleep() synchronization primitive.

During 2 machine debugging, I have found that the threads get created
successfully but when the call goes to IOLockSleep(request_lock, (void*)
thread_id, false)the driver gets crashed.

I put the stack backtrace for the same crash as follows:

gdb()
Breakpoint 1, com_CoreSnap_driver::init(OSDictionary*) (this=0x1c7be20,
properties=0x1d74a60) at Spsoft_CoreSnapDriver.cpp:64
64          IOLog("\n Inside Init function...\n");
(gdb) n
Current language:  auto; currently c++
Line number 65438 out of range; Spsoft_CoreSnapDriver.cpp has 1568
lines.
(gdb) n
Breakpoint 1, com_CoreSnap_driver::init(OSDictionary*) (this=0x1b110a0,
properties=0x1d74880) at Spsoft_CoreSnapDriver.cpp:64
64          IOLog("\n Inside Init function...\n");
(gdb) n
Line number 65438 out of range; Spsoft_CoreSnapDriver.cpp has 1568
lines.
gdb) n
78          for(i = 0; i < NUM_HANDLER_THREADS; i++)
(gdb) n
80              thr_id[i] = i;
(gdb) n
82              IOLog("\nInit():: thr_id = %d\n", thr_id[i]);
(gdb) n
Line number 65438 out of range; Spsoft_CoreSnapDriver.cpp has 1568
lines.
(gdb) n
84              IOThread thread_t =
IOCreateThread(com_CoreSnap_driver::handle_request_loop, (void*)
&thr_id[i]);
(gdb) n
86              if(thread_t)
(gdb) n
88                  IOLog("\nInit():: Thread created successfully\n");
(gdb) n
Line number 65438 out of range; Spsoft_CoreSnapDriver.cpp has 1568
lines.
(gdb) n
Program received signal SIGTRAP, Trace/breakpoint trap.
Debugger (message=0x2d4440 "panic") at
/Users/yogeshp/PROJECTS/SnapShot/DarwinCode/xnu-517.7.21/osfmk/ppc/model_dep.c:627
627                     TRAP_DEBUGGER;
(gdb) bt
#0  Debugger (message=0x2d4440 "panic") at
/Users/yogeshp/PROJECTS/SnapShot/DarwinCode/xnu-517.7.21/osfmk/ppc/model_dep.c:627
#1  0x00034d84 in panic (str=0x2d43c8 "{%d} Assertion failed: file
\"%s\", line %d: %s\n") at
/Users/yogeshp/PROJECTS/SnapShot/DarwinCode/xnu-517.7.21/osfmk/kern/debug.c:198
#2  0x0004201c in assert_wait (event=0x0, interruptible=0) at
/Users/yogeshp/PROJECTS/SnapShot/DarwinCode/xnu-517.7.21/osfmk/kern/sched_prim.c:619
#3  0x00042424 in thread_sleep_mutex (event=0x1927d98, mutex=0x0,
interruptible=1) at
/Users/yogeshp/PROJECTS/SnapShot/DarwinCode/xnu-517.7.21/osfmk/kern/sched_prim.c:749
#4  0x20e65530 in com_CoreSnap_driver::handle_request_loop(void*)
(data=0xcb63cb4) at
/System/Library/Frameworks/Kernel.framework/Headers/IOKit/IOLocks.h:112
#5  0x002777d4 in ioThreadStart () at
/Users/yogeshp/PROJECTS/SnapShot/DarwinCode/xnu-517.7.21/iokit/Kernel/IOLib.c:140
Current language:  auto; currently c
(gdb) n
635             splx(spl);
(gdb) n
637     }
(gdb) n
panic (str=0x2d43c8 "{%d} Assertion failed: file \"%s\", line %d: %s\n")
at
/Users/yogeshp/PROJECTS/SnapShot/DarwinCode/xnu-517.7.21/osfmk/kern/debug.c:202
202             PANIC_LOCK();
(gdb) n
204             PANIC_UNLOCK();
(gdb) n
203             panicstr = (char *)0;
(gdb) n
204             PANIC_UNLOCK();
(gdb) n
205             thread->wait_queue = save_waits[cpu_number()];  /*
Restore the wait queue */
(gdb) n
206             if (return_on_panic) {
(gdb) n
205             thread->wait_queue = save_waits[cpu_number()];  /*
Restore the wait queue */
(gdb) n
206             if (return_on_panic) {
(gdb) n
211             kdb_printf("panic: We are hanging here...\n");
(gdb) n
212             while(1);
(gdb) n

Please suggest so that I can pinpoint the issue.

Thanks in advance,
Yogesh Pahilwan





 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Threading and Synchronization in Mass storage driver
      • From: Herb Petschauer <email@hidden>
References: 
 >Threading and Synchronization in Mass storage driver (From: Yogesh P <email@hidden>)
 >Re: Threading and Synchronization in Mass storage driver (From: Herb Petschauer <email@hidden>)
 >Re: Threading and Synchronization in Mass storage driver (From: Yogesh P <email@hidden>)
 >Re: Threading and Synchronization in Mass storage driver (From: Herb Petschauer <email@hidden>)
 >Re: Threading and Synchronization in Mass storage driver (From: Yogesh P <email@hidden>)

  • Prev by Date: pthread_mutex_lock returns errcode
  • Next by Date: pthread_mutex_lock returns errorcode 22
  • Previous by thread: Re: Threading and Synchronization in Mass storage driver
  • Next by thread: Re: Threading and Synchronization in Mass storage driver
  • Index(es):
    • Date
    • Thread