Sun Microsystems, Inc.  Sun System Handbook - ISO 3.4 June 2011 Internal/Partner Edition
   Home | Current Systems | Former STK Products | EOL Systems | Components | General Info | Search | Feedback

Asset ID: 1-72-1009128.1
Update Date:2009-09-30
Keywords:

Solution Type  Problem Resolution Sure

Solution  1009128.1 :   Solaris [TM] 9 on Sun Fire [TM] v880: prtdiag crashes with a segmentation fault after installing libpsvc patch 113574-08  


Related Items
  • Sun Fire V880 Server
  •  
  • Solaris SPARC Operating System
  •  
Related Categories
  • GCS>Sun Microsystems>Servers>Entry-Level Servers
  •  

PreviouslyPublishedAs
212630


Symptoms
After installing patch# 113574-08, prtdiag crashes with a segmentation fault.

# prtdiag
Segmentation Fault

Resolution
Backout patch# 113574-08.

or

Install patch# 113447-04 or newer.

As of March 22th, 2004, this patch is not yet officially released.

When released, 113447-04 SunOS [TM] 5.9: libprtdiag_psr patch, known as an
oem_merge or consolidation patch, will obsolete 113574-07, and like patches
for several VSP hardware platforms.

Relief/Workaround
Backout patch# 113574-08.

Additional Information
The root cause of this problem is in mis-matches of the data structure
which are used in the libraries, /usr/platform/sun4u/lib/libprtdiag.so.1
and /usr/platform/SUNW,Sun-Fire-880/lib/libprtdiag_psr.so.1.
(Bug# 5016636)

Product
Sun Fire V880 Server
Solaris 9 Operating System

Internal Comments
Refer to bug# 5016636 report.

Tha patch (113574-08) uses the following modified "prop" structure:

| typedef struct prop Prop;
| struct prop {
| Prop *next;
| dynOppbuf name;
^^^^^^^^^^^^^^^
| dynOppbuf value;
^^^^^^^^^^^^^^^
| int size; /* size of data in bytes */
| };

| typedef struct dynoppbuf dynOppbuf;
| struct dynoppbuf {
| struct dynopenpromio opp;
^^^^^^^^^^^^^^^^^^^^^^^^
| char *val_ptr; <<<
^^^^^^^^^^^^^^
| };

| #define OPROM_NODE_SIZE 5
| struct dynopenpromio {
| uint_t oprom_size;
| union {
| char *b;
| int i[OPROM_NODE_SIZE];
| } opio_u;
| uint_t holds_array;
| };

So, the offset of "prop->name.val_ptr" is

4(Prop *name) + sizeof(struct dynopenpromio) = 0x4 + 0x1c = 0x20


However, the current OFFICIAL patch# 113447-03 (including
/usr/platform/sun4u/lib/libprtdiag.so.1) and old patch (113574-03) uses
old "prop" structure.

| typedef struct prop Prop;
| struct prop {
| Prop *next;
| Oppbuf name;
^^^^^^^^^^^
| Oppbuf value;
^^^^^^^^^^^^^
| int size; /* size of data in bytes */
| };

OppBuf is not "structure" but "union"!!

| #define MAXPROPSIZE 128
| #define MAXVALSIZE (4096 - MAXPROPSIZE - sizeof (uint_t))
| #define BUFSIZE (MAXPROPSIZE + MAXVALSIZE + sizeof (uint_t))
| typedef union {
| char buf[BUFSIZE];
| struct openpromio opp;
| void *val_ptr; <<<<
^^^^^^^^^^^^^^^^^
| } Oppbuf;

So, the offset of "prop->name.val_ptr" is

4(Prop *name) = 0x4

This structure mis-match caused this problem.

Patch# 113574-08 will be removed from SunSolve DB.
prtdiag, 113574-08
Previously Published As
74897

Change History
Date: 2004-03-24
User Name: c5913
Action: Approved
Comment: Added trademarks, rearranged the title, and corrected a couple minor typos.
Version: 0
Date: 2004-03-24
User Name: c5913
Action: Accepted
Comment:
Version: 0
Date: 2004-03-24
User Name: 27596
Action: Add Comment
Comment: Please Hold off on Final Review. My colleagues and I discussed this article this
morning and we may need to make some chnages/additions. I have emailed
the details to the article's author.

Please don't put it back into Tech review again or we in VSP PTS
may loose control of this article (some one in CCC Hw Support may
miss this Comment and move the article back to Final Review).

Do whatever you think best, move it back to the Author (preferred)
or to my queue.

Thanks, Don Plako
x21371.

Will be in ~ 1PM EST March 24 (today)
Version: 0
Date: 2004-03-22
User Name: 27596
Action: Approved
Comment: I HAVE REVIEWED THE ARTICLE AND MADE A FEW
SMALL ENHANCEMENTS AND SOME GRAMMATICAL
CHANGES. TECHNICALLY THE ARTICLE IS SOLIDD.

REGARDS,

Don Palko

---------
Product Technical Support Engineer
Volume Server Products (VSP)
Product Technical Support (PTS)
Sun Support Services
Sun Microsystems, Inc, Burlington, Ma.
Primary # 781-442-1371 (x21371)
Cell Phone: 508-523-8701
Email: [email protected]
Version: 0
Date: 2004-03-22
User Name: 27596
Action: Accepted
Comment:
Version: 0
Date: 2004-03-21
User Name: 31705
Action: Approved
Comment: Please review this SRDB.
Version: 0
Date: 2004-03-21
User Name: 31705
Action: Created
Comment:
Version: 0
Product_uuid
29726712-0a18-11d6-8636-c7e996b581dc|Sun Fire V880 Server
4f82caac-36f3-11d6-866b-85f428ef944e|Solaris 9 Operating System

Attachments
This solution has no attachment
  Copyright © 2011 Sun Microsystems, Inc.  All rights reserved.
 Feedback