On Mechanisms for Deadlock Avoidance in SIP Servlet Containers

Increasingly, VoIP applications are being deployed to multi-threaded SIP servlet containers. Unfortunately, the standard specification for these containers is silent with regard to synchronization issues, and the lack of direction has led different vendors to adopt a variety of different and incompatible policies for preventing data races among concurrent threads. In addition to the obvious portability problems, some policies make servlet code prone to deadlock under common scenarios of use. This paper documents this problem with concrete examples and proposes modifications to the standard to allow programmers to implement the protocols needed to avoid these common deadlocks. These extensions will open the way for automatic generation of the synchronization logic needed to implement these avoidance protocols, thereby increasing the safety and reliability of applications deployed in this environment.

[1]  R. E. Kurt Stirewalt,et al.  The universe model: an approach for improving the modularity and reliability of concurrent programs , 2000, SIGSOFT '00/FSE-8.

[2]  Masaaki Mizuno,et al.  Invariant-based specification, synthesis, and verification of synchronization in concurrent programs , 2002, ICSE '02.

[3]  Michael R. Blaha,et al.  Object-Oriented Modeling and Design for Database Applications , 1997 .

[4]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[5]  R. E. Kurt Stirewalt,et al.  Safe and Reliable Use of Concurrency in Multi-Threaded Shared-Memory Systems , 2005, 29th Annual IEEE/NASA Software Engineering Workshop.

[6]  Daniel J. Rosenkrantz,et al.  System level concurrency control for distributed database systems , 1978, TODS.

[7]  R. Stirewalt,et al.  Separating Synchronization Concerns with Frameworks and Generative Programming , 2008 .

[8]  Eric Cheung,et al.  Experience with component-based development of a telecommunication service , 2005, CBSE'05.

[9]  Gregor Kiczales,et al.  D: A Language Framework for Distributed Programming , 1997 .

[10]  Abraham Silberschatz,et al.  Operating system concepts (2nd ed.) , 1985 .

[11]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[12]  R. E. Stirewalt,et al.  Designing and implementing a model of synchronization contracts in object-oriented languages , 2003 .

[13]  Gregory W. Bond,et al.  ECharts: balancing design and implementation , 2002 .

[14]  Victor Luchangco Transaction Synchronizers , 2005 .

[15]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[16]  R. E. Kurt Stirewalt,et al.  A component-oriented model for the design of safe multi-threaded applications , 2005, CBSE'05.

[17]  Ivar Jacobson,et al.  Unified Modeling Language Reference Manual, The (2nd Edition) , 2004 .

[18]  Tevfik Bultan,et al.  Verifiable concurrent programming using concurrency controllers , 2004, Proceedings. 19th International Conference on Automated Software Engineering, 2004..

[19]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[20]  Gregory W. Bond,et al.  ECharts for SIP servlets: a state-machine programming environment for VoIP applications , 2007, IPTComm '07.

[21]  Abraham Silberschatz,et al.  Operating System Concepts , 1983 .

[22]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[23]  Mark Handley,et al.  SIP: Session Initiation Protocol , 1999, RFC.