◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C言語の設計ミスった危険な関数トップ10決めようぜ


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1574306624/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん2019/11/21(木) 12:23:44.93ID:T7Jjyyy1
gets関数とか

その他の例
https://www.jpcert.or.jp/sc-rules/c-msc24-c.html

2デフォルトの名無しさん2019/11/21(木) 15:39:01.67ID:IZBPdnFY
Anal

3デフォルトの名無しさん2019/11/22(金) 14:16:12.00ID:TbHXN4jn
当時の設計なら、gets の仕様はああなる。

4デフォルトの名無しさん2019/11/22(金) 14:46:28.12ID:vYD7HZZ7
gets()をゲッツ、puts()をプッツと読んでたな

5デフォルトの名無しさん2019/11/22(金) 14:53:55.43ID:eCK2aX+t
strtokの読み方で出身地が分かる

6デフォルトの名無しさん2019/11/22(金) 15:15:08.67ID:vYD7HZZ7
>>5
それはストアトークと読んでた

7デフォルトの名無しさん2019/11/23(土) 04:11:30.09ID:l4WHmfnE
最大のミスは、文字列そのものをデータ型としては持たずに、
文字列はヌルで終端された不定長の文字の配列であるとしたことにある。

8デフォルトの名無しさん2019/11/23(土) 06:08:18.47ID:eMnkZzKn
どうすれば良かった?

9デフォルトの名無しさん2019/11/23(土) 06:14:02.33ID:GXkG1Oic
関数だっつうてんのに

10デフォルトの名無しさん2019/11/25(月) 21:55:20.72ID:E+NtJXA3
scanfだろjk

11デフォルトの名無しさん2019/11/26(火) 04:12:31.62ID:As19A6dg
putchar()はプッチャーと読んでいた

12デフォルトの名無しさん2019/11/26(火) 12:29:09.20ID:dAEqoOXB
scanf
strtok
feof

13デフォルトの名無しさん2019/11/26(火) 20:24:02.10ID:feqSm/53
C言語の関数名ってまだリンカがシンボルの先頭から6文字までしか認識しなかった頃の名残だしな
変な短縮形が多い

14デフォルトの名無しさん2019/11/27(水) 03:05:40.28ID:nQw9n1Di
strcpy()とか意図しようがしまいが簡単にメモリをぶっ壊せる
よくよく考えるとキチガイ過ぎる

15デフォルトの名無しさん2019/11/27(水) 12:17:59.87ID:zdI/1sLa
C言語に安全性を求めるのは違う

16デフォルトの名無しさん2019/11/27(水) 12:31:41.61ID:KtqS+hCI
time
localtime

17デフォルトの名無しさん2019/11/27(水) 13:15:40.24ID:MN5dlGGA
>>15
ほんそれ

18デフォルトの名無しさん2019/11/27(水) 13:50:48.05ID:pAkxzJaX
>>15
根本的な所を勘違いしてる。

C言語で安全性が求められないからと言って、
C言語で作ったアプリには安全性は求められるだろ?

例えば、getsは安全に使うことが不可能なんだよ。

19デフォルトの名無しさん2019/11/27(水) 14:42:57.39ID:MN5dlGGA
大昔に出来た関数なんだから多くを求めるな

20デフォルトの名無しさん2019/11/30(土) 20:36:22.78ID:4Da+M2q+
>>11
俺はプッキャーだった

21デフォルトの名無しさん2019/11/30(土) 20:38:28.97ID:4Da+M2q+
>>18
> 例えば、getsは安全に使うことが不可能なんだよ。
ならgetsを使わずにgetcでやればいいだけ

22デフォルトの名無しさん2019/11/30(土) 21:25:24.92ID:vRr1Hx4s
安全は考えないで設計したのでミスってはいない

23デフォルトの名無しさん2019/11/30(土) 22:19:14.33ID:Zwer7NNs
アブドーラ・ザ・プッチャー

24デフォルトの名無しさん2019/12/01(日) 10:49:26.54ID:uAQAPMuh
組み込みでC言語は使うけど、10個以上の標準関数って使わないな...。

25デフォルトの名無しさん2019/12/01(日) 12:47:24.87ID:p3Z7Nr0h
memcpy / memset / memcmp
strlen / str(n)cpy / str(n)cmp / str(n)cat

これで10個

26デフォルトの名無しさん2019/12/01(日) 13:17:11.11ID:W5IIwakz
組み込みで文字列扱わないことも多いね。
どんな製品でもほぼ使うのはmemset、memcpy、memcmpぐらいじゃない?

27デフォルトの名無しさん2019/12/01(日) 17:41:11.15ID:YWi4MX0G
>>25

>>1のリンク先より

未チェックの時代遅れの関数
以下の関数を、未チェックの時代遅れの関数と定義する。
memcpy, strcpy, strncpy, strcat, strncat (一部抜粋)


半分あてはまってるなw

>>26
memcpyは危険なので使うのはやめましょう

28デフォルトの名無しさん2019/12/01(日) 20:53:25.46ID:IKYJT3WJ
C言語ではなく標準ライブラリの話かい。

29デフォルトの名無しさん2019/12/01(日) 21:25:08.28ID:7gLQ63yc
アセンブラより安全なら良いじゃん

30デフォルトの名無しさん2019/12/02(月) 00:51:13.45ID:RIgVO6ZZ
memcpyが危険とか言うなら
C言語使うなってことになる

31デフォルトの名無しさん2019/12/02(月) 00:53:00.40ID:RIgVO6ZZ
>>28
標準じゃない関数だと...
失敗談みたいなのを期待してた?

32デフォルトの名無しさん2019/12/02(月) 02:04:59.50ID:AAYR8Yqw
>>1
セキュリティ考慮していない元関数より、代替関数の設計ミスが酷いな

strtodとかなにこれw
エラーの返し方がアホすぎる

33デフォルトの名無しさん2019/12/02(月) 06:48:47.55ID:kJrDK+4B
>>32
> strtodとかなにこれw
> エラーの返し方がアホすぎる
そう言うのは改善案を提案しないと単なるアホの独り言にしかならんぞw

34デフォルトの名無しさん2019/12/02(月) 13:15:48.70ID:EYnQFBh2
一体どういう考えで昔の人は、getsの仕様はあれでOKだと思ったんだろう?
どう考えてもバッファオーバーフローするやん?
しない方法なんて存在するの?

35デフォルトの名無しさん2019/12/02(月) 13:18:13.53ID:xJykAg3Z
バッファオーバーフローしないデータを食わせれば良い
わざわざ変なデータを入力するヤツが悪い

って考えの時代の関数だ

36デフォルトの名無しさん2019/12/02(月) 13:41:09.67ID:EYnQFBh2
でもさ、getsってキーボード入力やろ?

37デフォルトの名無しさん2019/12/02(月) 15:30:07.33ID:LC/c96JG
gets は、もう、標準ライブラリにも入っていないので許せ

38デフォルトの名無しさん2019/12/02(月) 18:02:20.65ID:kmSxls5X
>>36
わざわざ変なデータを入力するヤツが悪い

39デフォルトの名無しさん2019/12/02(月) 18:41:59.62ID:E2hgf+6B
ダンディ坂野「gets!!」

40デフォルトの名無しさん2019/12/02(月) 20:50:15.44ID:kJrDK+4B
>>36
1行80文字とかって決め打ちできる環境なんでしょ
自分しか使わないようなツールとかならこれで十分
って考え

41デフォルトの名無しさん2019/12/03(火) 01:51:02.34ID:dBsSbed7
8ビットの整数型を char などというものにしたのも、アメリカ人は
自分たちの英語しか知らない田舎者であることを如実に表している。

42デフォルトの名無しさん2019/12/03(火) 09:14:31.49ID:yN5r9ueQ
>>40
64kbでも広大な空間だったな

43デフォルトの名無しさん2019/12/03(火) 12:22:07.21ID:90Sp73uq
>>41
実に田舎者の考え方で笑える
逆だよ、都会の人間は都会のことしか知らないし知る必要がない
なぜか田舎の人間は都会のことも知ろうとするw

44デフォルトの名無しさん2019/12/03(火) 12:29:35.88ID:Uh1tIUQA
> 逆だよ、都会の人間は都会のことしか知らないし知る必要がない
だから世界が狭くて無知になりやすい

> なぜか田舎の人間は都会のことも知ろうとするw
だから世界が広い

45デフォルトの名無しさん2019/12/03(火) 12:51:15.68ID:dBsSbed7
井の中の蛙 大海を知らず
されど空の蒼さを知る

46デフォルトの名無しさん2019/12/03(火) 13:25:13.55ID:g2sdmHcp
C言語が出来た時の時代を考えれば十分

「変数名に日本語が使えない言語は糞」
って時代もそのうち来るよ

47デフォルトの名無しさん2019/12/03(火) 19:14:24.81ID:90Sp73uq
>>44
残念ながらそうはなってないんだなw
狭く深くっていう世界だから
要するに田舎でな何をするにもオーバーヘッドが大きいってことな
今はネットでだいぶマシになったけどネット以前の情報収集考えたらアホでもわかる話

48デフォルトの名無しさん2019/12/08(日) 02:33:17.34ID:aqWVKWA+
アホなデータ食わせるアホなやつのために堅牢な仕組みにする必要はない

49デフォルトの名無しさん2019/12/11(水) 01:29:51.60ID:7IDmuKiG
>>41
元々は9bit

50デフォルトの名無しさん2019/12/11(水) 06:55:08.36ID:IbA4V9X0
>>46
メモリが640kバイトしか使えなかった頃からのものだしな

51デフォルトの名無しさん2019/12/11(水) 07:59:10.55ID:yA/FdCBI
>>5
ストラトック

52デフォルトの名無しさん2019/12/11(水) 15:20:43.27ID:JkExA39E
大昔って端末やエディタなんかでも1行256とか1024バイト程度しか扱えなかったばず

53デフォルトの名無しさん2019/12/11(水) 15:32:22.68ID:8OP/pbId
256 の時代は割と長かった希ガス

54デフォルトの名無しさん2019/12/13(金) 06:37:32.10ID:o1f1J6fH
昔は1行の長さを先に決めてファイルをクリエイトしました
途中で変更はできません

55デフォルトの名無しさん2019/12/14(土) 13:26:55.02ID:TlZt0bii
関数そのものじゃないが
breakにラベル指定出来なかったのは設計ミスやろ

56デフォルトの名無しさん2019/12/14(土) 13:54:03.80ID:JwYnIOEa
その為のgoto

57デフォルトの名無しさん2019/12/14(土) 22:43:29.04ID:8CJijD11
gotoはラベルのスコープが広いから使いにくい。ループごとに別のラベル名を
付けないといけないし、ラベル名を別のループ用のものと書き間違えると
意図しない所へ飛んで行ってしまう。スパゲッティでバグの元。

ループにラベルを付ければ、スコープがそのループ内に限定され、そのループの
外にある別のループに同じラベル名を付けることができるから、書きやすく
読みやすい。例えば、こんな感じ。

for @outer (i = 1; i <= 3; i++) {
  for (j = 1; j <= 3; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 3) break @outer;
  }
}
for @outer (i = 1; i <= 5; i++) {
  for (j = 1; j <= 5; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 5) break @outer;
  }
}

58デフォルトの名無しさん2019/12/14(土) 22:45:51.60ID:JwYnIOEa
単純に
breakする数を指定出来るだけで良い

59デフォルトの名無しさん2019/12/15(日) 06:50:28.91ID:6aWNd1w0
>>58
ネストの数を数えるとか最低だと思う

60デフォルトの名無しさん2019/12/15(日) 07:00:06.17ID:a0yEED8b
1000行のコードでbreak 7;とかされても、
どこに抜けるかわからんよな!

61デフォルトの名無しさん2019/12/15(日) 09:51:38.77ID:5sPbacoo
ネストの数がわからないような巨大な構造は
それだけで最低だ
そんなんだと名前付きループにした所で
@outerなんて名前が使い回されて
同じ名前のループがネストされて
それこそ難読コードになる
それならユニークなラベルによるgotoの方が良い

>>57くらいのループなら
break 2;
は名前を考える手間が無くて楽だし
見にくくもない

62デフォルトの名無しさん2019/12/15(日) 09:57:28.64ID:5sPbacoo
とは書いたけど
どっちも有るならどっちも欲しい

どっちかだけげならbreak 2;の方が欲しい
って感じ

63デフォルトの名無しさん2019/12/15(日) 10:52:04.89ID:6aWNd1w0
>>61
> そんなんだと名前付きループにした所で
> @outerなんて名前が使い回されて
> 同じ名前のループがネストされて
> それこそ難読コードになる
無能の妄想w

64デフォルトの名無しさん2019/12/15(日) 11:05:09.82ID:5sPbacoo
ループの先頭、ループの終わり、break部分
3箇所見ないとダメってだけでダメな仕様

65デフォルトの名無しさん2019/12/15(日) 12:32:17.60ID:bDjAMWVj
>>64
なぜか自分の前提は
> >>57くらいのループなら
なのにラベルにした途端にループの頭とbreakとループの終わりが一瞥でわからないとかアホすぎ

66デフォルトの名無しさん2019/12/15(日) 12:36:08.74ID:5sPbacoo
大きければgoto
小さければbreak n

67デフォルトの名無しさん2019/12/15(日) 12:38:50.49ID:5sPbacoo
名前を付ける手間を許容するならgotoという解決法が既にある

68デフォルトの名無しさん2019/12/15(日) 13:48:44.02ID:o9m7qUoD
>>60
ネスト変わるような変更あるたびにbreakの引数勝手に書き換えてくれるエディタとかマクロが流行る

69デフォルトの名無しさん2019/12/15(日) 16:33:57.62ID:bDjAMWVj
>>67
ifとgotoあるからforもwhileもdoも要らんという主張か
本物のプログラマーだなw

70デフォルトの名無しさん2019/12/15(日) 16:52:03.21ID:u46gpj2V
歪んだ教育のせいで
gotoに拒絶反応を示す人が多いんだよな

2重ループを抜けるなら素直にgotoを使えって

71デフォルトの名無しさん2019/12/15(日) 16:53:29.68ID:pTp+dpJs
アセンブラの
jmp 1f
とかを C でやりたいという話なのか?
やってみりゃいいじゃん。プリプロセッサの出力を処理すればいい。
1 パスで出来ると思うよ。
ひょっとしてもう誰かがやってるかも。

72デフォルトの名無しさん2019/12/15(日) 18:05:59.04ID:5sPbacoo
for (i = 1; i <= 3; i++) {
  for (j = 1; j <= 3; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 3) goto outer;
  }
} outer:;

73デフォルトの名無しさん2019/12/15(日) 18:58:38.98ID:5sPbacoo
for (i = 1; i <= 3; i++) {
  for (j = 1; j <= 3; j++) {
    printf("%d, %d\n", i, j);
    if (i * j > 3) goto outer;
  }
}
printf("complete\n");
outer:;

74デフォルトの名無しさん2019/12/15(日) 19:01:19.97ID:5sPbacoo
わざわざ言語拡張しなくても
>>57以上の事が実現出来る

75デフォルトの名無しさん2019/12/16(月) 09:05:52.89ID:AI1GDY0I
ラベルのスコープを狭くしたいという話のようだから
マクロの中で使ってこそ真価を発揮するんじゃないかな。
フル仕様のパースが必要というわけではなく、かなり手抜きできそうではある。
あれば便利というのは否定しないが、C でそこまで必要かというと…

76デフォルトの名無しさん2019/12/16(月) 12:33:03.93ID:0jmxiGrg
{
goto hoge;
hoge:;
}
{
goto hoge;
hoge:;
}
これで二重になってたら困るしある意味なってなくても困るな

77デフォルトの名無しさん2019/12/16(月) 13:21:05.83ID:ZZ8St2Js
マクロで二重以上のループってのもなかなか考えづらいなあ

一応、ラベル名をパラメータとする手もある

使う側のコストを考えるとgotoの為にパラメータを増やさないよな
gotoを使わない主義者がよくやってるように
余分な変数を使って実装するんだろうね

78デフォルトの名無しさん2019/12/16(月) 13:23:11.26ID:ZZ8St2Js
アセンブラだとマクロローカルラベルってのがあったりする
ラベルを頻繁に使うので

あと
@@/@b/@fのように、
直近のラベルを指定する仕組みもある

79デフォルトの名無しさん2019/12/16(月) 13:28:49.41ID:ZZ8St2Js
>>72 >>73 みたいなのって
gotoの使いどころだと思うんだけだ
gotoを使わない人はどう書いてるの?

特に >>57 の答えを聞いてみたい

80デフォルトの名無しさん2019/12/16(月) 15:17:28.75ID:arH1mwfY
void print_data(void) {
 for (i = 1; i <= 3; i++) {
   for (j = 1; j <= 3; j++) {
     printf("%d, %d\n", i, j);
     if (i * j > 3) return;
   }
 }
}
print_data();
printf("complete\n");

81デフォルトの名無しさん2019/12/16(月) 16:34:59.64ID:/0yHEQmX
outer より後に処理が続く場合は?

82デフォルトの名無しさん2019/12/16(月) 16:51:44.02ID:arH1mwfY
void print_data(void) {
 for (i = 1; i <= 3; i++) {
   for (j = 1; j <= 3; j++) {
     printf("%d, %d\n", i, j);
     if (i * j > 3) return;
   }
 }
}
print_data();
outer より後に処理が続く場合
printf("complete\n");

83デフォルトの名無しさん2019/12/16(月) 16:55:03.26ID:arH1mwfY
"短い処理"をいちいち関数にしなくて済むから、break 2とかはあってもいいが、
長い処理は関数にしてないとろくにテストできないんだからgotoなんていらない


lud20191216171207
このスレへの固定リンク: http://5chb.net/r/tech/1574306624/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C言語の設計ミスった危険な関数トップ10決めようぜ 」を見た人も見ています:
三峡ダム危険水位上回り設計最高に迫る。それでは八代亜紀さんに歌っていただきましょう「雨の慕情」
【株価】日本車輌製造(7102) ストップ安 2468円(-16.7%) ※台湾脱線事故、車両設計ミス発表 [11月2日10:14]
【新型コロナ】国連人権トップ「ワクチン強制接種、いかなる状況でも許されない」 ランセット誌「未接種者を危険視しないように」 [かわる★]
危険すぎるスマホ依存 長文読めず、言語能力は2歳児レベルに
【注意喚起】危険すぎるスマホ依存 長文読めず、言語能力は2歳児レベルに(2900文字の記事です)
【注意喚起】危険すぎるスマホ依存 長文読めず、言語能力は2歳児レベルに(2900文字の記事です)★2
東京の地下鉄に乗ったけどなんであんなに座席幅狭いの? 小人が設計したの? 完全な設計ミスだね
【Verilog】 記述言語で論理設計Project13 【VHDL】
博多ラーメン「一蘭」が北海道に初進出、玄関の設計ミスで開業と同時に廃墟ビルになった「ノルベサ」
【Verilog】 記述言語で論理設計Project14 【VHDL】 [無断転載禁止]
【新国立競技場】 民主党「東京五輪のザハ案が設計コンペで決まったのは民主党政権だけど、蓮舫氏をトップに政府の方針を追及するわ!」
アメリカで最も危険な職業トップ10
トイレが外から「丸見え」に 北大、改修工事で設計ミス...「配慮足りなかった」と対応へ [きつねうどん★]
10代の6割以上が「憲法9条改正に反対」全世代中トップ そりゃ一番徴兵される危険性高い年代だしな
【中央日報】 青瓦台で文大統領に会った元老「四面楚歌を知るような表情だった」 外交的な孤立が最も危険なようだ [05/09]
【悲報】青信号と同時に急発進し対向車より先に右折、対向車の左折に被せるように右折…日本、危険運転だらけの劣等国だった
【気象庁】「これまでに経験したことのないような大雨」 「重大な危険が差し迫った異常事態」「最善を尽くしてほしい」★3
ドラマ10 ミストレス~女たちの秘密~(2)「危険な香り」★1
掛橋が人気トップクラスなのはグループにとって危険な兆候だね
【AI】AIが文章を書けるようになったことで政治がゆがめられる危険性がでてきた [すらいむ★]
中国さん、ノート用CPUを魔改造してデスクトップ用に再設計して売ってしまう 動作はする模様
【Microsoft】「BlueKeep同様に危険」なリモートデスクトップサービスの脆弱性修正の早期適用を呼び掛け
【ファッション】エッチな豆知識 大事な彼女には天然シルクのパンティーをはかせよう!でないと病気の危険が…[11/05] ©bbspink.com
[再]ミストレス~女たちの秘密~「危険な香り」
「近親交配したら障害が出る」 これもう神様の設計ミスだろ。 
台湾脱線事故の車両に設計ミスと発表(日本車両製造) 安全装置切っても司令部に伝わらず。
【国際】ラオスのダム決壊、原因は韓国企業の設計ミスと結論が出る 設計より堤防が6.4メートル低く建設★4
小池のような危険なウヨは、安倍ちゃんが都政に閉じ込めているんだぜ
【国際】 米海兵隊トップ 普天間基地移設計画の進展を懸念 [NHK]
【国際】ラオスのダム決壊、原因は韓国企業の設計ミスと結論が出る 設計より堤防が6.4メートル低く建設★2
【国際】ラオスのダム決壊、原因は韓国企業の設計ミスと結論が出る 設計より堤防が6.4メートル低く建設★3
顔面って毎日ちゃんと洗わないと自分の脂でギトギトになって雑菌が繁殖して炎症起こすのって明らかに神の設計ミスだよな。
【中国サイト】30分で地球壊滅?米誌が選んだ世界で最も危険な原子力潜水艦トップ5
【経済】韓国サムスン電子、時価総額でトヨタ抜く=韓国ネット「小国の企業が日本のトップ企業を抜いた!」「ある意味危険な現象では?」
【速報】任天堂、技術責任者を更迭!!スイッチ設計ミスの責任か [無断転載禁止]
C言語で関数を書いていくスレ
最長不倒関数■C言語でmain関数に全コードを入れる
南アフリカはどうしようもないくらい危険な国
危険な破壊カルト糞価無学カビSGIをカルト認定しよう!
車のドライバーって狭い住宅街でも1秒を争うような危険な運転してるけど
【悲報】PCデポ「LINEをお使いの方、このような画面になっていませんか?危険なので今すぐご相談ください!」
【悲報】日本人さん…外国人よりも危険な犯罪民族だった…日本人は外国人の2倍危険
酒、紙コップ2杯(350ml)一気飲みで死ぬことが判明。こんな危険なものが注意書きもなく「飲み物」として平然と売られている現実
日本語とかいう母国語者数トップクラスのマイナー言語www
マー関トップを決めよう 立教VS同志社 [無断転載禁止]
手続き型システムの設計 1
関数型プログラミング言語Haskell Part32
関数型プログラミング言語Haskell Part30
関数型言語ML (SML, OCaml, etc.), Part 7
オブジェクト指向システムの設計 173
オブジェクト指向システムの設計 174
アーキテクチャ設計, 処理方針, 規約設計など
【DDD】ドメイン駆動設計【エリック・エヴァンス】
関数型言語一般 [無断転載禁止]
関数型言語とオブジェクト指向型言語って
Rubyの設計上の欠点とは何か?
関数型プログラミング言語Haskell Part33
関数型言語ML (SML, OCaml, etc.), Part 6
関数型言語ML (SML, OCaml, etc.), Part 8
データ構造とか設計の説明ってどうすんの???
【Microsoft】Excel関数ベースのプログラミング言語「Microsoft Power Fx」登場 オープンソースで公開予定 [少考さん★]
オブジェクト指向のディレクトリ構造の調査と設計
2017年もっとも「商業的に失敗だった作品」を決めよう
野党が国会をサボったせいで大阪市長激怒「国民を人質に取っているのと同じ」 ネット「野党のいない間に多数決で全部決めよう」
18:50:43 up 62 days, 19:49, 0 users, load average: 9.39, 9.46, 9.73

in 0.014161825180054 sec @0.014161825180054@0b7 on 061907