T.R | Title | User | Personal Name | Date | Lines |
---|
1804.1 | Look at ULTRIX doc... | FUEL::graham | if ya want home cookin, stay home | Tue Nov 28 1989 17:02 | 57 |
|
Re:.0
>Fixed up unaligned data access for pid 9083 (nms_query_tcp) at pc 0x4fc874
> Does anyone have a clue on how to fix this. The store_int routine is not
>in my code. I believe its in the DECWindows stuff...
RISC systems, unlike VAX, process word references to be "naturally aligned"..
short words (2 bytes) have an even byte boundary and long words (4 bytes)
are accessed on boundaries divisible by 4. On a VAX, short and long words
can be accessed on any byte boundary.
The "fixed up..." messages that you see is a successful attempt by ULTRIX
to fix up unaligned accesses in programs. A failure to do so will cause
the processes to be terminated with a bus signal error.
Generally, it is a good thing to avoid unaligned accesses, because they
cause 'traps' in the ULTRIX kernel, which in turn affect overall system
performance.
UAC is the utility on ULTRIX to manage the "unaligned" access.
RISC uac(1)
NAME
uac - Unaligned Access Message Control
SYNTAX
uac s p value
DESCRIPTION
The uac command controls printing of "Fixed up unaligned
data access for pid nnn at pc 0xAddr" messages. This com-
mand is used to set or display the flag that controls print-
ing of the message for the system, or for the parent process
of the user, typically a shell.
OPTIONS
The following options can be used with the uac command:
s Set/display the current setting of the flag for the
system.
p Set/display current setting of the flag for the parent
process.
VALUES
If the value is present, the flag is set; otherwise, the
current setting of flag is displayed. The value can be
either a zero (0) to turn the flag off, or a one (1) to turn
the flag on.
RESTRICTIONS
You must be superuser to set the system flag.
1
Kris...
|
1804.2 | Avoid them on VAXen as well | CRLMAX::jg | Jim Gettys, Cambridge Research Lab | Tue Nov 28 1989 17:18 | 4 |
| Unaligned references on VAXen slow them down too; unaligned data is always
a bad idea. The cost on the VAX is not as large (microcode trap rather
than real trap), and you get silently penalized.
- Jim
|
1804.3 | still need help | MARX::KELLEY | | Wed Nov 29 1989 18:34 | 9 |
| How can I go about getting this fixed. Just turning off the display
of the message with "uac s 0" is really unexceptable. It's just
hiding the problem.
Can anyone give a solution to the REAL problem?
Thanks much!
Bruce
|
1804.4 | K & R.... | FUEL::graham | Gimme what you can get back.. | Wed Nov 29 1989 22:44 | 20 |
|
> How can I go about getting this fixed. Just turning off the display
>of the message with "uac s 0" is really unexceptable. It's just
> hiding the problem.
>Can anyone give a solution to the REAL problem?
It is very hard to understand *every* aspect of your problem if
nobody can see your code.
Assuredly, if you make all your user program's integers amd pointers
align on longword boundaries, and shorts on word boundaries, everything
will behave normally. Take the Kernighan and Ritchie 'C' text, and look at
the index on the following topics - "alignment, bit field", "alignment by
union", and "alignment restriction".
Sorry to disappoint you with the answers so far.
Kris..
|
1804.5 | Need more information | HANNAH::MESSENGER | Bob Messenger | Thu Nov 30 1989 13:20 | 14 |
| I think normally the C compiler will align things correctly. You can get into
trouble when playing around with pointers and casting data to different types.
There was a data alignment problem in DECterm which was caused by DECterm
freeing data that it hadn't allocated (i.e. it passed an address in the middle
of a block of data instead of at the start of the block). That's just one
example of how things can go wrong.
Since you've said that the problem seems to be in a DECwindows routine, could
you tell us more about what routine you are calling? Maybe you need to be
more careful with the type and alignment of the data you are passing to the
routine.
-- Bob
|