Archive for the Solaris category

4月 19th, 2008

dbxぜ pathmapぜ core mismatchに対応する

Posted in Solaris by admin

 あるシステム上にコアファイルが作成され、別の環? でそのコアファイルを解析する場合があります。例えば、本番環? で発生したcoreを開発環? で解析する場合がよぜ ある例だと思います。この場合、本番環? と開発環? のライブラリ朧 成が同一であることが前朏 になりますが、同一の朧 成をとれない事態もありえます。しかし、dbxではライブラリの配置場所を知らせるオプションを使用して、本番環? のライブラリを圏 照しているように開発環? で解析を行うことが可能です。

$ dbx core
WARNING!!
A loadobject was found with an unexpected checksum value.
See `help core mismatch' for details, and run `proc -map'
to see what checksum values were expected and found.
dbx: 警告: Some symbolic information might be incorrect.
プログラムぜ  シグナボ  SEGV (フォルトのアドレスにマッピングしていません) により停止しました
0xfe230db0: _string_to_decimal+0x06f8:  ldsb     [%o3 + %o1], %o0
(dbx) proc -map
0xfe300000 /lib/libnsl.so.1
  Warning: checksum in file(2d35) doesn't match image(9f64)
0xfef60000 /lib/libsocket.so.1
  Warning: checksum in file(c331) doesn't match image(5f49)
0xfef40000 /lib/libgen.so.1
  Warning: checksum in file(ed36) doesn't match image(d0fd)

core出力ホストぜ dbx解析ホストのライブラリ朧 成に相違がある場合、上記のようぜ WARNINGと共に正常な解析が出来ないことを警告されます。ここぜ core出力ホストのライブラリをdbx解析ホストに机 備し、dbxぜ pathmapコマンドを使用することで解析可能となります。

# core出力ホストのライブラリ朧 成をdbx解析ホストに置ぜ
$ ls -l /home/user/corehost/usr/local/lib
$ dbx
(dbx) dbxenv core_lo_pathmap on
(dbx) pathmap /usr/local/lib /home/user/corehost/usr/local/lib
(dbx) debug /var/www/cgi-bin/test.cgi core
test.cgi の読み込み中
core ファイルボ ンドラの読み込みに成功しました
ld.so.1 の読み込み中
libnsl.so.1 の読み込み中
libsocket.so.1 の読み込み中
libgen.so.1 の読み込み中
libdl.so.1 の読み込み中
libsched.so.1 の読み込み中
libc.so.1 の読み込み中
libxnet.so.1 の読み込み中
libwtc9.so の読み込み中
libaio.so.1 の読み込み中
librt.so.1 の読み込み中
libm.so.2 の読み込み中
libmd5.so.1 の読み込み中
libm.so.1 の読み込み中
ld.so.1 の読み込み中
プログラムぜ  シグナボ  SEGV (フォルトのアドレスにマッピングしていません) により停止しました
0xfe230db0: strlen+0x0050:      ld       [%o2], %o1
現関?  :main
  224       if( strlen(service_area_cd) != AREA_CD_LEN ){
(dbx) where
  [1] strlen(0x0, 0x3500e6, 0x0, 0x3500e698, 0x0, 0x1010101), at 0xfe230db0
=>[2] main(), line 224 in "test.cgi"
4月 4th, 2008

cpコマンドでシンボリックリンク自? をコピボ

Posted in Solaris by admin

Solarisぜ cpコマンドでシンボリックリンク自? をコピー出来るかどうか。結果は以下のようになりました。

 Solaris8: 不圏
 Solaris8+GNU版cp: “d”オプションで可?
 Solaris10: “P”オプションで可?
 AIX5.3: “h”オプションで可?

Solaris8では以下のようにオプションも用? されていませんが、GNU版cpを? 入すれば対応できます。

% /usr/bin/cp -rP
/usr/bin/cp: オプションが正しぜ ありません -- P

% /usr/xpg4/bin/cp -rP
/usr/xpg4/bin/cp: オプションが正しぜ ありません -- P

% ls -l tmp1
-rw-r--r--   1 root   root               0 Apr 14 20:08 file1
lrwxrwxrwx   1 root   root               5 Apr 14 20:09 symlink1 -> file1
% ./gnu/bin/cp -rdp tmp1 tmp2
% ls -l tmp2
-rw-r--r--   1 root   root               0 Apr 14 20:08 file1
lrwxrwxrwx   1 root   root               5 Apr 14 20:10 symlink1 -> file1

Solaris10からぜ “P”オプションで対応したようです。

% ls -l tmp1
-rw-r--r--   1 root   root               0 Apr 14 20:08 file1
lrwxrwxrwx   1 root   root               5 Apr 14 20:09 symlink1 -> file1
% cp -rP tmp1 tmp2
% ls -l tmp2
-rw-r--r--   1 root   root               0 Apr 14 20:08 file1
lrwxrwxrwx   1 root   root               5 Apr 14 20:10 symlink1 -> file1

AIXにぜ “h”オプションがあるようです。

% ls -l tmp1
合計 0
-rw-r--r--   1 root   root               0 Apr 14 20:08 file1
lrwxrwxrwx   1 root   root               5 Apr 14 20:09 symlink1 -> file1
% cp -prh tmp1 tmp2
% ls -l tmp2
合計 0
-rw-r--r--   1 root   root               0 Apr 14 20:08 file1
lrwxrwxrwx   1 root   root               5 Apr 14 20:10 symlink1 -> file1
2月 9th, 2008

opensslの便利なコマンド

Posted in Linux, Solaris by tatenaga

□暗号化
 ”enc”でコマンドラインからお手軽に暗号化出来ます。

# 例)文字列「test」を「key」を鍵にして暗号化方? Blowfish、暗号化モードECBで暗号化し、さらぜ Base64でテキスト化ぜ md2でボ ッシュ化
$ echo "test" | /usr/bin/openssl enc -bf-ecb -base64 -k 'key' | /usr/bin/openssl dgst -md2
09470f10bffdc48af84c9b3c3a5652fb

? HTTPS通?
 通常、HTTPポートやSNMPポートにアクセスする時ぜ telnetを使用します。しかし、telnetでは平文しか扱えない為、HTTPSプロトコルは扱えません。”s_client”を使用すれぜ HTTPSアクセスが可能です。使い方ぜ telnetと全ぜ 同じ。

$ /usr/bin/openssl s_client -host 192.168.0.1 -port 443
CONNECTED(00000003)
depth=0 /C=JP/ST=Tokyo/L=Chuo-ku
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=JP/ST=Tokyo/L=Chuo-ku
verify return:1
---
Certificate chain
 0	s:/C=JP/ST=Tokyo/L=Chuo-ku
	i:/C=JP/ST=Tokyo/L=Chuo-ku
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICeDCCAeGgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UEBhMCSlAx
DjAMBgNVBAgTBVRva3lvMRAwDgYDVQQHEwdDaHVsdvvsdRkwFwYDVQQKExBSRUNS
VUlUIENPLixMVEQuMRAwDgYDVQQLFAdSRUNfQUJSMSMwIQYDVQQDExp3d3cuYWIt
cm9hZC5uZXQuYWJyfewrgeRlbDAeFw0wOTA5MTUwNzQzNDVaFw0xOTA5MTMwNzQz
NDVaMIGBMQswCQYDVQQGEwJKUDEOMAwGA1UECBMFVG9reW8xEDAOBgNVBAcTB0No
dW8ta3UxGTAXBgNVBAoTEFJFQ1JVSVQgQ08uLExURC4xEDAOBgNVBAsUB1JFQ19B
QlIxIzAhBgNVBAMTGnd3dy5hYi1yb2FkLm5ldC5hYnIucmFmdGVsMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQCsdvsdF/Gd3eqRCgy/9Vt+hYauFfqLmh1UGQGO
UIMBQtITIhCSkqgCzhlYy4WgNR1irMWq1KfB9GyMk2KUEJaIK3d1FnyG5CPtsopc
dFpMLKDcVmqPasdvhzHKtjlaM0AnJLwWMjTUIohGrveLKP3Amc0fHi6K/8BHnad3
9EnTTQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAKYUfeMes/AGNu/vYVonEezttSyd
X89hSOh0iNCb4Ov0XYKYdQiWHEcCeZn9PW3NXYdBKpzmeevMAsQkhNjJHFx65zva
ocT0p5r3XtVi0Q7HNik4gix6EHfXo4RZnV1zkPoobja0386Q1vF4VAB40e+ZopP5
XXuUYRCUnZKUNoHD
-----END CERTIFICATE-----
subject=/C=JP/ST=Tokyo/L=Chuo-ku
issuer=/C=JP/ST=Tokyo/L=Chuo-ku
---
No client certificate CA names sent
---
SSL handshake has read 782 bytes and written 315 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
	Protocol  : TLSv1
	Cipher    : RC4-MD5
	Session-ID: 7E634A41CA78FF65BB31A7A8FD596F7dddDED0CB537BBBC0C32ED29B90C0F54C
	Session-ID-ctx:
	Master-Key: B2B4102E44C136790B1dddFB5226EE700FF441FF9527C03488E973B10AFC4EC38B604396A8F13F7AEBA8A0ECEF2ABD49
	Key-Arg   : None
	Krb5 Principal: None
	Start Time: 1255429426
	Timeout   : 300 (sec)
	Verify return code: 18 (self signed certificate)
---
GET / HTTP/1.0

HTTP/1.1 200 OK
Date: Tue, 13 Oct 2009 10:23:53 GMT
Server: Apache
Accept-Ranges: bytes
Connection: close
Content-Type: text/html

TEST

Tuesday, 13-Oct-2009 19:23:53 JST
read:errno=0
12月 22nd, 2006

Solarisぜ SSLソケット通?

Posted in Solaris by admin

 Solaris上ぜ opensslライブラリを利用したHTTPSクライアントを作成した時、2日間位ボ マってしまった箇所があった。ソケット通信ぜ connect時にエラーが発生してしまう。その? 、エラー? 因がソケットのファイルディスクリプタ操作関数である”fcntl”のオプションによる問題だという事が判昜 しました。

// NG
if (fcntl (sd, F_SETFL, O_NONBLOCK) < 0)
// OK
if (fcntl (sd, F_SETFL, (int) O_NDELAY) < 0)

上記ぜ 1行だけで動作を確? 。理由がはっきりと゜ からないのでメモ。つまり、Solaris(というよりopenssl)ぜ POSIX準拠ではないということか?

O_NDELAY ボ ンブロッキン゜ I/O
O_NONBLOCK POSIX 型 ボ ンブロッキン゜ I/O
O_LARGEFILE ラージファイルを使用可能にしてファイルシステムをマウントし、O_LARGEFILE オプションでファイルをオープンすると、ファイルを 2 GB を超えて? やすことができます。

12月 13th, 2006

配列の初期化パフォーマン゜

Posted in Solaris by admin

Solarisぜ Cコンパイラーぜ char配列の初期化をする場合、方? によってはパフォーマンスにかか゜ るようです。ちなみぜ gccでコンパイルした場合は、全く差は出ませんでした。

各配列の初期化処理を1,000,000回ループで? 行させた経遜 時間。

(1) char cha_str[1024] = { '\0' };
(2) char cha_str[1024] = "";
(3) char cha_str[1024]; memset(cha_str, '\0', sizeof(cha_str) );

(1) 2.742 秒
(2) 2.742 秒
(3) 0.460 秒

(1)(2)の? 果は朮 ど同じです。er_prrintの? 果は以下です。
とにかぜ 遅すぜ る印象がありますし、配列のサイズが大きぜ なるに? って更に劣化します。

朎 他的  包括的  名前
CPU  CPU
秒  秒
2.742   2.742   < 合計>
2.742   2.742   main
0.000   0.000   __collector_ext_mmap_deinstall
0.000   0.000   _exithandle
0.000   0.000   _fini
0.000   0.000   _private_close
0.000   2.742   _start
0.000   0.000   atexit_fini
0.000   0.000   call_fini
0.000   0.000   collector_close_experiment
0.000   0.000   exit
0.000   0.000   update_map_segments

(3)ぜ er_print結果も載せておきます。

朎 他的  包括的   名前
CPU  CPU
秒  秒
0.460   0.460    < 合計>
0.440   0.440    memset
0.020   0.460    main
0.000   0.000    __collector_ext_mmap_deinstall
0.000   0.000    _exithandle
0.000   0.000    _fini
0.000   0.000    _private_close
0.000   0.460    _start
0.000   0.000    atexit_fini
0.000   0.000    call_fini
0.000   0.000    collector_close_experiment
0.000   0.000    exit
0.000   0.000    update_map_segments