SPONSORS:






User Tag List

Results 1 to 7 of 7
  1. #1
    Senior Member
    Join Date
    Jul 2001
    Posts
    147
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Sibling halted due to exception

    Hi All,

    I'm running testcases concurrently on 2 PC's. One thread failed on one PC and I was given this error "*** Sibling halted due to exception".

    Silk stopped running.

    Is there a way to continue concurrent testing if you receive this error message?

    ------------------
    Who Tests The Tester...
    Who Tests The Tester...

  2. #2
    Senior Member
    Join Date
    Jul 2001
    Posts
    147
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re: Sibling halted due to exception

    I've attached the code below:

    ------------------
    Who Tests The Tester...
    Who Tests The Tester...

  3. #3
    Senior Member
    Join Date
    Jul 2001
    Posts
    147
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re: Sibling halted due to exception

    I've attached the code below:

    ------------------
    Who Tests The Tester...
    Who Tests The Tester...

  4. #4
    Senior Member
    Join Date
    Aug 2003
    Location
    NY
    Posts
    708
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re: Sibling halted due to exception

    I am facing this same problem. Did you find any solution?

    Is there any way to avoid the Sibling halted due to exception message appearing in the results file?

    Thanks and Regards,
    Harshil

  5. #5
    Senior Member
    Join Date
    Aug 1999
    Location
    Cambridge, UK
    Posts
    470
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re: Sibling halted due to exception

    using a do..except construct to catch all exceptions and deal with them yourself?

  6. #6
    Senior Member
    Join Date
    Aug 2003
    Location
    NY
    Posts
    708
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re: Sibling halted due to exception

    Hi Vince,

    I thought this to be an internally generated message and not an exception. I already have do-except blocks wherever applicable, unfortunately was just not using it the way I should [img]images/icons/smile.gif[/img] . Got a prompt reply from Segue Support (for the first time) and was able to find the solution to my problem as follows:

    Here's my code structure:

    </font><blockquote><font size="1" face="Verdana, Arial, Helvetica">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">testcase t1() appstate none
    do
    for each machines in lsmachines
    spawn
    SetMachine(machines)
    do
    runtestcase()
    except
    logerror(machinename) // fetched using GetMachineData
    reraise
    except
    processexceptions()</pre><hr /></blockquote><font size="2" face="Verdana, Arial, Helvetica">Process exceptions is the function that should be used to process all exceptions.

    Here's the modification that I did to just remove the Sibling Halted message.

    </font><blockquote><font size="1" face="Verdana, Arial, Helvetica">code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">const SIBLING_HALTED_EXCEPTION = -14100

    testcase t1() appstate none
    do
    for each machines in lsmachines
    spawn
    SetMachine(machines)
    do
    runtestcase()
    except
    logerror(machinename) // fetched using GetMachineData
    if ExceptNum() ! = SIBLING_HALTED_EXCEPTION
    reraise
    except
    processexceptions()</pre><hr /></blockquote><font size="2" face="Verdana, Arial, Helvetica">Thanks and Regards,
    Harshil

  7. #7
    Senior Member
    Join Date
    Aug 2003
    Location
    NY
    Posts
    708
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re: Sibling halted due to exception

    And for all's information, heres the reply from Segue Support:

    This is a valid error message.
    This error comes up if you are running against several targets, you are
    using the spawn statement, an exception occurs on one of the target machines
    and the thread running there halts. That is, if an error is raised in one
    thread and is not handled, the error will bubble up to the parent testscript
    as "Sibling halted due to exception".
    Because there is no way for SilkTest to untangle any dependencies that may
    exist between threads, it makes the assumption that any thread's failure
    means the entire test should fail. Thus, your second
    (and subsequent) threads will get an exception in the middle of completely
    innocuous code, like the sleep (1).
    If you want to be sure that an error in one thread does not halt the parent
    testscript, then put the code following each spawn into a do...except
    statement.
    For example, the code fragment below shows using a do...except around the
    connect following a series of spawns to create a list of connected machines
    and a second do...except around the call of the testcase on each machine.
    ...
    [-] for each sMachine in lsMachines
    [ ] // Allow for thread that raises an exception
    [ ] // not to disrupt other threads.
    [-] spawn
    [-] do
    [ ] hMachine = Connect (sMachine)
    [ ] print ("Connected to {sMachine}")
    [ ] // To be safe, only allow one thread at a time to append to
    [ ] // the list of connected machines.
    [-] access lhMachines
    [ ] ListAppend (lhMachines, hMachine)
    [-] except
    [ ] LogWarning ("Couldn't connect to {sMachine}: {ExceptData ()}")
    [ ] // wait until all the threads have terminated.
    [ ] rendezvous
    [-] access lQueue
    [ ] lQueue = lsTests
    [ ] // Now start a thread for each connected machine.
    [ ] // You have to access shared variables even if you *know* that no one
    [ ] // else is trying to use them.
    [-] access lhMachines
    [-] for each hMachine in lhMachines
    [-] spawn
    [ ] // Allow for thread that raises an exception
    [ ] // not to disrupt other threads.
    [-] do
    [ ] test1()
    [-] except
    [ ] ExceptLog ()
    [ ] rendezvous

    If No Valid Errors Show up in the Results File
    ====================================
    Of course, there's a presumption here that one your threads got an exception
    that wasn't handled, and therefore caused it to terminate. If you aren't
    seeing that exception in the results, this is clearly a problem.
    If you're running multi-machine tests where there is no dependency between
    the machines, then you want to make sure that all exceptions are handled in
    some way, either by using appropriate testcase/multitestcase
    calls, or by putting in your own do...except blocks. This should allow you
    to track down just where the error is happening.
    How to Tell Which is the Valid Error and Handle the Exception?
    ================================================== ===
    How do you put do..excepts around the original valid error that is
    triggering the cascade of false errors if you do not know in advance which
    line of code is going to
    fail?
    Do you have to put an exception block around every line of code ?
    Why not simply have SilkT report exception messages for remote machines in
    the same way it reports exception information for tests run locally ?
    It would make more sense to flag an exception only on the FIRST thread which
    fails, the exceptions on the latter threads are invalid and are "false
    alarms" which are distracting and waste time.
    No need to unravel depdendencies, just make the logical assumption that only
    the first failure is real, and that later failures might or might not be
    real.
    Yes, this is a serious limitation in Silk Test, it does not report the
    specific exception message for siblings. It only gives a specific exception
    message when running locally.


    Thanks and Regards,
    Harshil

 

 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

vBulletin Optimisation provided by vB Optimise v2.6.0 Beta 4 (Pro) - vBulletin Mods & Addons Copyright © 2016 DragonByte Technologies Ltd.
User Alert System provided by Advanced User Tagging v3.0.9 (Pro) - vBulletin Mods & Addons Copyright © 2016 DragonByte Technologies Ltd.
Questions / Answers Form provided by vBAnswers (Pro) - vBulletin Mods & Addons Copyright © 2016 DragonByte Technologies Ltd.
vBNominatevBulletin Mods & Addons Copyright © 2016 DragonByte Technologies Ltd.
Feedback Buttons provided by Advanced Post Thanks / Like (Pro) - vBulletin Mods & Addons Copyright © 2016 DragonByte Technologies Ltd.
Username Changing provided by Username Change (Free) - vBulletin Mods & Addons Copyright © 2016 DragonByte Technologies Ltd.
BetaSoft Inc.
Digital Point modules: Sphinx-based search
All times are GMT -8. The time now is 09:27 AM.

Copyright BetaSoft Inc.