IBM Support

PM73469: Multiple dynamic processes given same PID


You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • In our SDL system, we have two similar blocks ('A' ? 'B') which
    both inherit from one common block ('C'). In blocks 'A' ? 'B', a
    static process dynamically creates a process from the inherited
    block 'C'.
    These all occur as the system initializes at the same time.
    During system operation, a signal from elsewhere in the system,
    which is routed by PID (saved in a variable when created) to the
    dynamic process in block 'B', is never seen to be received.
    Investigation into this revealed that both the dynamic processes
    created in 'A' and 'B' appear to have the same PID, for example
    As the signal is routed by PID, it therefore goes astray,
    assumingly to 'A'.
    Further investigation into the tight integration framework
    brought our attention to the macro RTOSSDL_CREATE (the non-
    X_ONE_TASK_PER_INSTANCE_SET variant) where we established that
    the 'createdProcesses' count ? 'queuename' string gave the same
    values for both processes, thus the confused signal routing.
    This only occurs on our target (CAdvanced) build under QNX
    Neutrino RTOS, which is strongly based on the Telelogic/Rational
    Solaris integration files.
    It does not occur in the Windows-hosted Simulation (Cbasic
    build, Windows XP Pro). We predominantly use SDL Suite v4.4
    patch 5, but it has been witnessed also on v6.3, which we will
    soon to move to completely.
                      Also, if we put in a small delay (e.g. 5s)
    when the dynamic process is created in Block B, such that the
    processes are staggered, then it works correctly, each process
    PID is unique and the above signal is routed correctly.
    Business impact ( BusImpact )
    Many days have been spent investigating the fault which has led
    us to the integration framework code. Even with a workaround for
    this specific case, it appears in certain circumstances, the
    fault could manifest elsewhere.
    Fix was provided for the problem which was good for Telelogic
    SDL 4.4. An updated version of  sctneutrino.h file was provided
    by development.
    The reason for the problem is during PId creation a global
    variable is referenced in a thread-unsafe style. So it is
    possible that 2 created processes get the same values from this
    variable and get the
    same PId.
    Fix requested for SDL as which is currently being used
    to develop some new projects

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * PROBLEM DESCRIPTION:                                         *
    * RECOMMENDATION:                                              *
    The creation of PIDs are not thread safe for CAdvanced /
    Neutrino RTOS tight integration.

Problem conclusion

  • During PId creation a global variable was referenced in a
    thread-unsafe style and sometimes this could lead to
    different created processes getting the same PIDs. This
    problem has been fixed and sctneutrino.h from RTOS
    integrations has been updated.

Temporary fix


APAR Information

  • APAR number


  • Reported component name


  • Reported component ID


  • Reported release


  • Status


  • PE




  • Special Attention


  • Submitted date


  • Closed date


  • Last modified date


  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name


  • Fixed component ID


Applicable component levels

  • R630 PSN


Document information

More support for: Rational SDL Suite

Software version: 6.3

Reference #: PM73469

Modified date: 29 November 2012

Translate this page: