#ssmjp に参加してきた。

By 杜若 桔梗 @ 2017-03-25 17:53

どうも、お久しぶりです。桔梗です。

どっかの誰かさんがスキルミスマッチの現場に放り込んだため相変わらずの爆発炎上案件にすべてのやる気を吸い取られていました。
なかなか時間が取れない中、#ssmjp があることを当日に知るという暴挙が発生いたしまして、たまたまThinkPad X220を野暮用のため持ち歩いていたことが幸いしてそこそこメモを取るつもりでいました。

が。。。

悲劇が。無線LAN認識しているのだけれども、電波が弱くてつながらない。
途中までせっせとTwitterでツイートしていましたが途中でどうにもならなくなり、Twitterへのアクセスもままならくなりました。

詳しい話は一足先にhashimonがアップロードしていますので、こちらはダイジェストで流していきたいと思います。

会場は、さくらインターネットさんのセミナールームをお借りして行われました。もともとは新橋で行われていたイベントとのことで、みんなが話したいことを話すという主義(LTの練習台)といった感じのようです。
トップバッターは会場を貸してくれたさくらインターネットの方で宣伝がありました。
さくらのクラウドでもopenSUSEが使えるようになったので使ってくださいと。
この話には、さくらのフィードバックでopenSUSEを使えるようにしてくださいというう意見が二桁の票を集めたからとのこと。二桁というと大した数ではないように見えますが、実際、中の人いわくそれなりの意見ということでした。
続いては、絵文字にまつわるお話でした。
絵文字的にはx^2の文字数をアイコン化することがかなり楽とのこと。それはまあ正方形作りやすいですからね。
個人的に思ったのは、英数字のフォント問題できれいに見せることを考えたら必ずしもx^2の文字列が作りやすいとは限らないのかなーと思いました。

このセッションが終わった段階で本当に、無線LANが不安定になりその対策に追われることとなります。
ドライバの更新やらロールバック、あまつさえは再起動に、モバイルルーター(L-09C)経由のインターネット接続、LGL34経由の接続(無線LAN・Bluetooth・USB)とやりましたが復旧しません。
私が悪戦苦闘している中、セッションはキーボードの話、openSUSEの使い方の話、イベントリポートなどと盛りだくさんで進んでいきます。
この時点でかなり焦ってパニック状態に近かったのですが、先週のごたごた関係の電話でとどめを刺され、完全にパニック状態になっていました。

といったところで。
気がつけばじゃんけん大会という名のプレゼントタイム。
中GeekoのぬいぐるみをなぜかGentooの方がもらうという一幕もありお開きになりました。

ちなみに。
ThinkPad X220の無線LANが絶不調だった件のオチは・・・・
ドライバやOSが原因ではなく物理的に無線LANカードのアンテナ線が外れてた(今朝判明)。

思い当たる節はあるのですが、何で今まで問題なく使えていたかが謎です・・・

JAVAのバグについて

By 杜若 桔梗 @ 2014-11-15 22:48

前回の投稿からずいぶんと間が開いてしまいました。桔梗です。

今回は珍しくLinux上でとあるソフトを動かしたときのお話です。

みんなも知っているSendmailというMTAがありますね。これの商用製品のアドオンという形で公開されている製品があるのですが、
この導入作業で遭遇したトラブルのお話です。
まあ、真犯人はバグだらけのJDK1.7系列ということなのですが、なかなか見つける手順というものは探してもないものですよね。
さっくりとお話をしますと、CoreDUMPが原因でフェイルオーバーするシステムがあると。原因はなんでしょうか、とう調査依頼です。
それならgdbで出力されたCoreをみてあげればいいわけです。コマンドライン上からは「gdb Coreを出力した実行ファイル Coreファイル」です。
その後に「thread apply all bt」と打つことですべてのスレッドをバックトレースすることができます。
これで、問題を起こしたスレッド、言い換えればCoreファイルを出力したスレッドの動きを追うことができます。
このときはメモリ周りのエラーでしたので重点的にGlibcやらLinux Kernel側を追っていました。今だからいえますが、これは思いっきり見当違いだったわけです。
真犯人は一番最初のスレッドにありました。ContinueInNewThreadだと?この後のスレッドはほとんどがsem_waitやら、pthread_cond_waitやら続いていました。
そこで、JDKのソースを探してみたところ・・・・・・

OpenJDK / jdk7u / jdk7u / hotspot/src/os/posix/launcher/java_md.cの1888行目以降を見てください。

ContinueInNewThread(int (JNICALL *continuation)(void *), jlong stack_size, void * args) {
int rslt;
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);

if (stack_size > 0) {
pthread_attr_setstacksize(&attr, stack_size);
}

if (pthread_create(&tid, &attr, (void *(*)(void*))continuation, (void*)args) == 0) {
void * tmp;
pthread_join(tid, &tmp);
rslt = (int)(intptr_t)tmp;
} else {
/*
* Continue execution in current thread if for some reason (e.g. out of
* memory/LWP) a new thread can’t be created. This will likely fail
* later in continuation as JNI_CreateJavaVM needs to create quite a
* few new threads, anyway, just give it a try..
*/
rslt = continuation(args);
}

pthread_attr_destroy(&attr);

とありますね。pthread_join()のところで場合によってはデッドロックが発生しますよね、これ。
たしかこの問題はJAVA1.8(8)で解決されていたように思いますがいかがでしょうか。

詳しい解説はこれから。

1888行目からの処理ですが、
pthread_createで pthreadを起動して、pthread_join でpthreadの終了待ちをしています、
この pthread_join は、ブロッキング関数の為、pthread_create で起動した処理が終了しないと、
デッドロックにはまって、ContinueInNewThread が終了せず、pthreadのIDが、スタックの変数の為、メソッドの外から終了させることもできません。

このソースでは、ContinueInNewThread で作ったソースがタイムアウトで終了する事もなく、外から殺す事も出来ない為、引き渡した処理によってはデッドロックが発生する致命的なバグです。

私も私でよくこんなもん見つけたよね・・・・・・

もちろん、openSUSEにはopenJDKが導入されています。できるだけ、openJDK8を利用した方がいいと思います。

ご無沙汰してます。桔梗です。

本日の午前中に利用したセミナーのスライドをアップしておきます。
PDF形式で、ほかのセミナー等に利用する場合はコメント欄に残していただけると幸いです。

近日中に設定ファイル記載例をのせる予定ですので待っていてください。

ファイル

オープンソースカンファレンスTokyo/Spring

By 杜若 桔梗 @ 2011-04-15 12:24

桔梗@ちびGeekoくん軍団の親玉(?)です。

ものすごい久しぶりにBlogを書いていますが・・・
まず最初に。

東日本大震災に被災された方々に謹んでお見舞い申し上げます。
また、被災地一日も早い復興をお祈りしております。

先日開催されたオープンソースカンファレンスTokyo/Springの資料をアップロードします。
Mobile Application Development
また、セミナーの様子もアップロードします。
満員御礼となったセミナーでほとんどSUSE Studioの紹介で終わってしまったことが悔やまれます。秋ではきちんと作成していきたいと思いますので期待していてください。

ついでに、あまりのふがいなさにセミナー修了後に特大Geeko君につぶされた筆者の写真もあげておきます。

こんばんは、桔梗です。
気がついたら我が家のちびGeeko軍団にタイトルジャックされていますが。

12月4日(土)にopenSUSEユーザー会の勉強会と忘年会をやりました。今年もあとわずかですが、振り返ってみるとかなりいろいろなことをやってきたことがわかります。
自分がやったことでも、SUSE Studioの紹介だったり、セキュリティ考察をやってみたり、よその勉強会に参加という名の乱入(マテ)をしていたりと思ったより充実した一年でした。

むろん、OSCにも毎度のごとく参戦しています。そして反省点もあるわけで・・。
来年はさらに充実した一年にしたいと思っています。

個人的なネタで恐縮ですが、ThinkITで何かやります。何かは・・・ええ、楽しみにしていてください。

締め切りまもれーーーーByちびGeeko軍団(!)

openSUSE 4月勉強会

By 杜若 桔梗 @ 2010-04-06 01:07

こんばんは、こんな時間に資料をアップロードしている桔梗です。
先日の勉強会に参加してくださった方、お疲れ様でした。

なれないプレゼンで申し訳なかったです。

ひとまず、プレゼンの資料を置いておきます。

一応、著作権は私、杜若桔梗が持っていますので、無断転載はやめてください。せめてMLに流すなりしてください。

五分でWebサーバーを作ってみよう

2月勉強会@トラブル発生

By 杜若 桔梗 @ 2010-02-09 22:57

こんばんは、桔梗です。
2/6の勉強会に参加してくださった皆様、お疲れ様でした。
本来であれば、私がさくさくさくっとWebサイトを構築しておしまいにする予定だったのですが、とんでもないトラブルが発生。

Sun MicrosystemsのxVM VirtualBoxでネットワーク認識しない(汗

そんなわけで何もできませんでした。

折角、SSHでいろいろ操ろうと思ってMacも持って行ったのに・・・・・無念。
本当は、仮想マシンであれこれやって見せようと思っていただけに申し訳なかったです。