[Openais] Crashing because all SU not yet operational

Hans Feldt Hans.Feldt at ericsson.com
Mon Sep 4 04:53:57 PDT 2006


I don't understand why GCC warns about different things when debug 
compiled or not:

seasc0036:exec > make OPENAIS_BUILD=DEBUG
/uabhafe/gcc/4.1/usr/local/bin/gcc  -O0 -g -Wall -DDEBUG -DOPENAIS_LINUX 
-I../include   -c -o amfsg.o amfsg.c
seasc0036:exec > touch amfsg.c
seasc0036:exec > make
/uabhafe/gcc/4.1/usr/local/bin/gcc  -O3 -Wall -fomit-frame-pointer 
-DOPENAIS_LINUX -I../include   -c -o amfsg.o amfsg.c
amfsg.c: In function 'assign_si':
amfsg.c:1165: warning: 'active_sus_needed' may be used uninitialized in 
this function
amfsg.c:1166: warning: 'standby_sus_needed' may be used uninitialized in 
this function


The '-W' flag enables some interesting warnings e.g.:

../include/sq.h:167: warning: comparison of unsigned expression >= 0 is 
always true


/Hans

Ola Lundqvist wrote:
> Hi
> 
> Thanks a lot for that information, now it works a lot better.
> 
> I got the following warnings when compiling however. I think that should
> be fixed.
> 
> amfsg.c:1165: warning: `active_sus_needed' might be used uninitialized
> in this function
> amfsg.c:1166: warning: `standby_sus_needed' might be used uninitialized
> in this function
> 
> Thanks a lot
> 
> // Ola
> 
> Hans Feldt wrote:
> 
>>This problem is related to the patch sent by Lars, "Amf node leave and
>>join #2" which will probably solve your problem. Please test with that
>>patch or wait until we have committed it.
>>
>>Another thing: please include AMF (if AMF related) in the subject line
>>of your emails to the list, easier for people to find and filter...
>>
>>Regards,
>>Hans
>>
>>Ola Lundqvist wrote:
>>
>>>Hi
>>>
>>>The next crash I got is when all components have been initiated and when
>>>it try to start up things.
>>>
>>>Here is a log of what happens:
>>>Sep  1 14:45:50.693455 [sync.c:0318] This node is within the primary
>>>component and will provide service.
>>>Sep  1 14:45:50.693580 [clm.c:0510] CLM CONFIGURATION CHANGE
>>>Sep  1 14:45:50.693634 [clm.c:0511] New Configuration:
>>>Sep  1 14:45:50.693693 [clm.c:0513]     r(0) ip(192.168.0.1)
>>>Sep  1 14:45:50.693769 [clm.c:0515] Members Left:
>>>Sep  1 14:45:50.693823 [clm.c:0520] Members Joined:
>>>Sep  1 14:45:50.693879 [clm.c:0522]     r(0) ip(192.168.0.1)
>>>Sep  1 14:45:50.693940 [sync.c:0318] This node is within the primary
>>>component and will provide service.
>>>Sep  1 14:45:50.694026 [totemsrp.c:1607] entering OPERATIONAL state.
>>>Sep  1 14:45:50.701111 [clm.c:0605] got nodejoin message 192.168.0.1
>>>Hello world from
>>>safComp=OAM-C-1,safSu=OAM-SU-1,safSg=SS7-SG-1,safApp=SS7-A-1
>>>
>>>
>>>>>WARNING<< Timestamp: 1157121953:807037
>>>
>>>ProcessType:SequenceNumber  161:1
>>>    CP:0  ss7osdpn.c   2690     0  1295     0     0     0    1102
>>>
>>>
>>>Sep  1 14:45:53.727109 [amfcluster.c:0130] Cluster: starting
>>>applications.
>>>(inservice=0) (active_sus_needed=1) (standby_sus_needed=1)
>>>assignment VI - partial assignment with SIs drop outs
>>>(inservice=0) (assigning active=1) (assigning standby=0) (assigning
>>>spares=0)
>>>su_active_assign=1, si_total=1,ass_to_su=1
>>>while su...1 != 2, 0 == 1, 0 > 0
>>>Not in service.
>>>while su...1 != 2, 0 == 1, 0 > 0
>>>Not in service.
>>>No one to assign. No SU in service yet.
>>>
>>>
>>>The last lines are my local changes to make sure that it do not crash.
>>>However what I determined is that nothing will be started anyway as the
>>>service units are not in service...
>>>
>>>This is a scetch patch from the local changes that I have done. I have
>>>removed manually from the patch output all the print statements that I
>>>had, so it may not apply cleanly.
>>>
>>>===================================================================
>>>--- exec/amfsg.c        (revision 1235)
>>>+++ exec/amfsg.c        (working copy)
>>>@@ -964,6 +971,7 @@
>>>                        amf_su_get_saAmfSUNumCurrStandbySIs (su) > 0) {
>>>
>>>                        su = su->next;
>>>+                        printf("Not in service.\n");
>>>                        continue; /* Not in service */
>>>                }
>>>
>>>@@ -1118,15 +1127,18 @@
>>>         */
>>>        inservice_count = (float)su_inservice_count_get (sg);
>>>
>>>-       active_sus_needed = div_round (
>>>-               sg_si_count_get (sg) * sg->saAmfSGNumPrefActiveSUs,
>>>-               sg->saAmfSGMaxActiveSIsperSUs);
>>>+        active_sus_needed = div_round (
>>>+            sg_si_count_get (sg) * sg->saAmfSGNumPrefActiveSUs,
>>>+            sg->saAmfSGMaxActiveSIsperSUs);
>>>
>>>-       standby_sus_needed = div_round (
>>>+        standby_sus_needed = 0;
>>>+        if (sg->saAmfSGMaxStandbySIsperSUs > 0) {
>>>+            standby_sus_needed = div_round (
>>>                sg_si_count_get (sg) * sg->saAmfSGNumPrefStandbySUs,
>>>                sg->saAmfSGMaxStandbySIsperSUs);
>>>+        }
>>>
>>>and then around
>>>
>>>@@ -1166,29 +1178,30 @@
>>>-       assert (assigned > 0);
>>>+       /*assert (assigned > 0);*/
>>>+        printf("No one to assign. No SU in service yet.\n");
>>>
>>>
>>>
>>>So what I want to know, is why the SU may not be considered operational
>>>and if I have done something wrong with my AMF application.
>>>
>>>Regards,
>>>
>>>// Ola
>>>
>>
> 
> 




More information about the Openais mailing list