[Orca-users] Solaris10 segfault core dump
Goran_Cvetanoski at medibank.com.au
Goran_Cvetanoski at medibank.com.au
Tue Feb 19 15:58:20 PST 2008
Hi Guys,
I have Orca installed on a T2000 running:
Solaris 10
RICHPse 3.4.1
orcallator.se 1.37
All was working fine with no issues. Yesturday some disks from a HDS9990
SAN
were connected and now orca segfault core dumps.
I tried applying the fix to diskinfo.se and mnt_class.se , but it still
core dumps.
ie:
diskinfo.se
@@ -197,7 +197,12 @@
points_at[n] = '\0';
// chop off the :a at the end
- strcpy(strrchr(points_at, ':'), "");
+ while (--n >= 0) {
+ if (points_at[n] == ':') {
+ points_at[n] = '\0';
+ break;
+ }
+ }
// hack off ../../devices from the start
sscanf(points_at, "../../devices%s", &points_at);
mnt_class.se
@@ -96,7 +96,12 @@
number$ = -1;
return;
}
- strcpy(strchr(buf, '\n'), "");
+ for (i=0; i<sizeof(buf); ++i) {
+ if (buf[i] == '\n') {
+ buf[i] = '\0';
+ break;
+ }
+ }
i = 0;
for(p=strtok(buf, "\t"); p != nil; p=strtok(nil, "\t")) {
switch(i) {
I wasn't sure if I was meant to replace the - lines with the + lines, or
just add the + lines after the - line.
I tried both combinations and both core dump.
With + lines added below the - line (Combination A)
19170 Segmentation Fault - core dumped
With the - lines removed and + lines added (Combination B)
19188 Segmentation Fault - core dumped
With the original diskinfo.se and mnt_class.se files (Combination C)
19208 Segmentation Fault - core dumped
This is what the end of the -d output looks like.
( /opt/RICHPse/bin/se.sparcv9 -d -DWATCH_OS -DWATCH_WEB
/opt/orca/lib/orcallator.se )
Combination A:
=============
if (raw_disk_short_name_cmp(second_name<sd1>, second_name_length<3>,
short_name<md53>, short_name_length<4>) == <0>)
if (strncmp(<dad>, disk1<sd1>, <3>) == <0>)
for(i = <0>
; i<4> < disk1_length<3>; i++)
i = <0>
if (disk1[0]<s> == <44>)
i++;
if (disk1[1]<d> == <44>)
i++;
if (disk1[2]<1> == <44>)
i++;
for(i = <0>
; i<3> < disk2_length<4>; i++)
i = <0>
if (disk2[0]<m> == <44>)
i++;
if (disk2[1]<d> == <44>)
i++;
if (disk2[2]<5> == <44>)
i++;
if (disk2[3]<3> == <44>)
i++;
if (disk1_length<3> != disk2_length<4>)
return <1>;
if (strcmp(RAW_disk[0].short_name[0]<s>, short_name<md53>) == <0>)
j++;
strcpy(short_name<md53>, GLOBAL_disk_info[43].short_name<(nil)>)
Segmentation Fault (core dumped)
Combination B:
=============
if (disk1_length<3> != disk2_length<4>)
return <1>;
if (j<42> > <1>)
if (raw_disk_short_name_cmp(second_name<sd1>, second_name_length<3>,
short_name<md53>, short_name_length<4>) == <0>)
if (strncmp(<dad>, disk1<sd1>, <3>) == <0>)
for(i = <0>
; i<4> < disk1_length<3>; i++)
i = <0>
if (disk1[0]<s> == <44>)
i++;
if (disk1[1]<d> == <44>)
i++;
if (disk1[2]<1> == <44>)
i++;
for(i = <0>
; i<3> < disk2_length<4>; i++)
i = <0>
if (disk2[0]<m> == <44>)
i++;
if (disk2[1]<d> == <44>)
i++;
if (disk2[2]<5> == <44>)
i++;
if (disk2[3]<3> == <44>)
i++;
if (disk1_length<3> != disk2_length<4>)
return <1>;
if (strcmp(RAW_disk[0].short_name[0]<s>, short_name<md53>) == <0>)
j++;
strcpy(short_name<md53>, GLOBAL_disk_info[43].short_name<(nil)>)
Segmentation Fault (core dumped)
Combination C:
=============
if (raw_disk_short_name_cmp(second_name<sd1>, second_name_length<3>,
short_name<md53>, short_name_length<4>) == <0>)
if (strncmp(<dad>, disk1<sd1>, <3>) == <0>)
for(i = <0>
; i<4> < disk1_length<3>; i++)
i = <0>
if (disk1[0]<s> == <44>)
i++;
if (disk1[1]<d> == <44>)
i++;
if (disk1[2]<1> == <44>)
i++;
for(i = <0>
; i<3> < disk2_length<4>; i++)
i = <0>
if (disk2[0]<m> == <44>)
i++;
if (disk2[1]<d> == <44>)
i++;
if (disk2[2]<5> == <44>)
i++;
if (disk2[3]<3> == <44>)
i++;
if (disk1_length<3> != disk2_length<4>)
return <1>;
if (strcmp(RAW_disk[0].short_name[0]<s>, short_name<md53>) == <0>)
j++;
strcpy(short_name<md53>, GLOBAL_disk_info[43].short_name<(nil)>)
Segmentation Fault (core dumped)
As I said, all was working fine until the SAN disk was added.
**********************************************************************************
The information contained in or attached to this message is intended only for the people it is addressed to. If you are not the intended recipient, any use, disclosure or copying of this information is unauthorised and prohibited. This information may be confidential or subject to legal privilege.
It is not the expressed view of Medibank Private Limited or any of its subsidiaries unless it is authorised by a person with actual authority.
To the fullest extent allowed by law, Medibank Private cannot accept liability for any virus damage caused by this message.
Medibank Private Limited ABN 47 080 890 259.
***********************************************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/orca-users/attachments/20080220/34d6ab4b/attachment.html>
More information about the Orca-users
mailing list