[Orca-users] Re: Segmentation Fault with 1.35

adlegrand alegrand at wallace.com
Wed Sep 11 18:42:53 PDT 2002


Kyle,

         You seem to have uncovered a bug in the SE toolkit.  Not the
raw disk code. :(    You have no idea how glad I am about that. It    
does however strongly resemble the errors that sometimes occured in 
earlier versions of the RAW DISK code.   

These occured when the code was trying to identify a raw device like
sd27  which did not exist in the structure GLOBAL_disk_info
[].short_name.  It ended up walking off the end of the array into 
unallocated memory.

You might try it with an earlier version of the SE toolkit. To see
if this solve your problem.
         
Alan LeGrand



--- In orca-users at y..., "jkcummi" <jkcummi at y...> wrote:
> I am running Solaris 7 with SE 3.2 and I just upgraded to 1.35.  On 
> SOME of my Solaris 7 systems I get a segmentation fault when I 
start 
> orcallator.
> 
> I read the thread and have tried commenting out and putting back 
the 
> USE_RAWDISK line.  Neither condition fixes the problem.  I ran 
> orcallator.se manually and got the following output.
> 
> Does anyone have an idea what is causing this?
> 
> Thanks!
> 
> -Kyle Cummings
> 
> short_name = tmp_sd.name$<sd27,err>
> strtok(short_name<sd27,err>, <,>)
> if (short_name<sd27> == name<sd27>)
> break;
> return tmp_sd(STRUCTURE);
> count++;
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404632>)
> if (dp.d_name<c0t13d0s1> == <.> || dp.d_name<c0t13d0s1> == <..>)
> if (!(dp.d_name<c0t13d0s1> =~ <s0$>))
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404664>)
> if (dp.d_name<c0t13d0s2> == <.> || dp.d_name<c0t13d0s2> == <..>)
> if (!(dp.d_name<c0t13d0s2> =~ <s0$>))
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404696>)
> if (dp.d_name<c0t13d0s3> == <.> || dp.d_name<c0t13d0s3> == <..>)
> if (!(dp.d_name<c0t13d0s3> =~ <s0$>))
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404728>)
> if (dp.d_name<c0t13d0s4> == <.> || dp.d_name<c0t13d0s4> == <..>)
> if (!(dp.d_name<c0t13d0s4> =~ <s0$>))
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404760>)
> if (dp.d_name<c0t13d0s5> == <.> || dp.d_name<c0t13d0s5> == <..>)
> if (!(dp.d_name<c0t13d0s5> =~ <s0$>))
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404792>)
> if (dp.d_name<c0t13d0s6> == <.> || dp.d_name<c0t13d0s6> == <..>)
> if (!(dp.d_name<c0t13d0s6> =~ <s0$>))
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404824>)
> if (dp.d_name<c0t13d0s7> == <.> || dp.d_name<c0t13d0s7> == <..>)
> if (!(dp.d_name<c0t13d0s7> =~ <s0$>))
> ld = readdir(dirp<9404544>)
> if (count<5> == GLOBAL_diskinfo_size<204>)
> dp = *((dirent_t *) ld<9404856>)
> if (dp.d_name<c1t51d0s0> == <.> || dp.d_name<c1t51d0s0> == <..>)
> if (!(dp.d_name<c1t51d0s0> =~ <s0$>))
> full = sprintf(</dev/dsk/%s>, dp.d_name<c1t51d0s0>)
> n = readlink(full</dev/dsk/c1t51d0s0>, 
> points_at</sbus at 3,0/SUNW,fas at 3,8800000/sd at d,0>, sizeof
> (points_at</sbus at 3,0/SUNW,fas at 3,8800000/sd at d,0>))
> if (n<74> == <-1>)
> points_at[74] = <>
> strcpy(strrchr(points_at<S#\x÷jr}n\>, <58>), <>)
> Segmentation Fault



More information about the Orca-users mailing list