OSC 2015 Nagoya
はじめましてkimitobokuです。
5月22,23日に開催されたオープンソースカンファレンス 2015 Nagoyaに出展しました。
今回は特大ぎーこも参加で大人気でした。
Open Build Serviceで楽してパッケージ作成というタイトルでのセミナーも行いました。
初めてのセミナーだったので緊張してましたが、聞きに来て頂いた人が少なかったのでまぁ気楽にやれて良かった感じなのですが、もうちょっと人が来て欲しいので来年リベンジします!
はじめましてkimitobokuです。
5月22,23日に開催されたオープンソースカンファレンス 2015 Nagoyaに出展しました。
今回は特大ぎーこも参加で大人気でした。
Open Build Serviceで楽してパッケージ作成というタイトルでのセミナーも行いました。
初めてのセミナーだったので緊張してましたが、聞きに来て頂いた人が少なかったのでまぁ気楽にやれて良かった感じなのですが、もうちょっと人が来て欲しいので来年リベンジします!
2/27, 28日に開催されたオープンソースカンファレンス 2015 Tokyo/Spring に出展しました。
冬コミの同人誌の流れで、Scribus と Krita についてのセミナーを行いました。
openSUSE などの Linux ベースの OS で利用可能なグラフィックスアプリケーションは充実してきており、ペンタブレットを接続してイラストを描いたり、そのイラストを使って本格的な冊子の作成を行うこともできるようになりました。
本セミナーでは、豊富なブラシが特徴的で、CMYK カラーも扱える高機能なペイントソフト Krita と、本格的な冊子の編集を行える Scribus の使い方をデモやコミックマーケットで頒布した openSUSE の同人誌の実例を交えながら紹介します。 また、11月にリリースされた openSUSE の最新版 13.2 と今後の動向についても 触れる予定です。
後半の Krita パート
10名くらいの方に参加して頂きました。
悪天候が多い気がする OSC 東京ですが、今回は快晴で暖かく、恵まれていました。展示ブースではいつものようにぎーこがたくさんですが、なんとディスプレイとペンタブレットを持ち込み Krita のデモを行いました。高機能で自由なペイントソフトが openSUSE 上で使えることに驚いた人も何人かいて、興味を持って頂けたようです。
金曜日の懇親会は、いつものように学食で。懇親会 LT で openSUSE.Asia Summit と同人誌の紹介をしました。キムワイプはいつかのテロの残りでしょうか。
土曜日の懇親会は、京王で浜田山に移動して、おなじみのバックビートでした。改札機の写真は多摩動物公園のものですが、Debian が動いている EG-5000 だと思ったら、旧型 EG-2000 だった模様(OSは不明)。
週の真ん中の2月11日に開催されたオープンソースカンファレンス2015浜名湖に出展してきました。思った以上に多くの方にブースに来て頂き、資料がなくなってしまいました。セミナーのスライドは Slideshare にあります。
(1) hashimom さんと浜松餃子で前夜祭。餃子以外にもローカルフードを堪能しました。(2) ブースの様子。今回は特大はお留守番で、中と黄緑小とちびたちです。松屋の人からの差し入れの豊橋名物のブラックサンダーが子供たちに人気でした。(3) ぎーこもやっぱりうなぎパイが好きなようです。(4)(5) 懇親会は浜松の地ビールのお店にて。 帰りは圧倒的な青勢力で駅前のポータルを制圧しながら帰る展開になりました。
次のイベントはデベロッパーズサミット(金曜日のみ Debian JP ブースを間借り)と、オープンソースカンファレンス東京/春です。どちらもコミケで完売した同人誌を頒布予定です。OSC 東京は土曜日に Scribus と Krita のセミナーがあります。
https://www.ospn.jp/osc2015-spring/modules/eguide/event.php?eid=32
また、ユーザーのみなさんには、ブースを盛り上げるほうにもご協力頂けると幸いです。
12月30日(火) コミックマーケット C87 西い35a にて、Geeko Magazine の特別号を頒布します。(500円予定)
内容は
別冊で openSUSE 女子部による、YaST のガイドが付いてきます。
また、30日の夜には、毎年恒例の openSUSE 大忘年会が開催されますので、ご参加をお待ちしています。
10月17と18日に初のアジア地域でのopenSUSE Summit が北京航空航天大学で開催されました。
openSUSEの開発は世界中からの多くの人が関わっているため、主なコミュニケーション手段は、メールやオンラインシステムを通して行われます。openSUSE.Asia Summit の重要な目的の1つは、普段オンラインでしか交流の無い人と実際に会うことです。実際に、会場入りすると、次々と挨拶が始まります。まずはopenSUSE.Asia Summitの準備を一緒にしてきた運営メンバー、そして日本語入力まわりを協力してパッケージングしているHillwood(中国人)と出会いました。
実際に会うことで初めて「どのような人か」分かることは多く、今後のオンラインコミュニケーションにも役立つのではないかと思います。 Asia Summitの発起人で、台湾のコミュニティメンバーのsakanaは「イベントの規模や、話す言葉は重要ではない。会う機会を作ることが重要」といっていました。実際に、今回もほとんどのセッションが中国語でした。
基調講演では、openSUSE Board長のRichard BrownとSUSEのエンジニアリング副社長であるRalf FlaxaがともにopenSUSEとSLESの今後の役割についてふれました。13.2のリリースと同時に、ローリングリリースのTumbleweedがFactoryのスナップショットベースとなり、より最新のフルパッケージがディストリビューションとして提供されます。13.2に向けて整備してきた自動テストフレームワークopenQAがこれを可能にしました。
一方、エンタープライズ向けのSLESと、新しさを求めるopenSUSEの間にはギャップがあります。このギャップを埋めるアイデアとして、バージョン番号付きのopenSUSEのリリースサイクルを見直すこと、長期サポートをするEvergreenプロジェクトが紹介されました。
Max Linは13.2以降のリリースの鍵となる、openQAとStagingプロジェクトの紹介を行いました(2セッション)。この2つの役割を簡単に説明すると、パッケージメンテナーによって更新されたパッケージは Factory に取り込む前に、まずはStagingプロジェクトに送られ、Staging プロジェクトのパッケージとFactoryの他のパッケージを合わせた状態でテストが行われます。このテストに使われるフレームワークがopenQAです。OSを仮想マシンで起動し、アプリケーションの起動・キーの入力などから構成されるテストケースを自動で実行します。openQAはGUIのテストにも対応しており、画面上に表示されている文字列が期待したものと同じかを判定することもできます。
その他には、Gary Linによるセキュアブートが有効な環境下でopenSUSEを動かす仕組みの解説もありました。現在のセキュアブートの環境では、Microsoftの鍵で署名されたブートローダーしか起動できませんが、署名されたプリローダーのShimを通してShimの鍵で署名されたGRUBを起動できます。また、マシン所有者のカスタムブートローダーやカーネルはmachine owner keyという鍵を用いて署名し、セキュアに起動できることが紹介されました。ブートローダーやカーネルの署名はOBSを通して簡単に行うこともできます。
台湾・日本・インド・北京のopenSUSEコミュニティの活動についての紹介も行いました。(日本は筆者が担当)インドコミュニティでは頻繁にパーティを開くようで、これがコミュニティを盛り上げる秘訣だと言っていたのが印象的でした。 私の発表スライド「A closer look at fonts and font rendering system on openSUSE」のスライドはこちらです。Notoフォントの話や、fontconfig、ヒンティングについて話しました:
会場で実際に手を動かすワークショップもいくつか開催されました。OBSワークショップでは学生ボランティアのメンバーが初めてのパッケージングに挑戦していました。
北京の町中にはセブンイレブンを始めとする日本でお馴染みのお店がちょくちょく見られますが、吉野家もそのうちの1つです。Summitの昼食は2日とも吉野家でした。とても人気があるようで、お昼の大混雑の中、参加者全員でお店に押しかけました(残念ながら、OSC界隈で人気のある松屋は見当たりません)。お店の雰囲気は日本のハンバーガーチェーン店に似ています。牛丼・豚丼・鶏丼・きのこ丼と一緒にコーラを頼むのが定番だそうです。
OSCでお馴染みの、最後のLT大会にしてみました。時間を拡大して当日申し込みを可能にしてみました。中でも面白かった発表は、Justin Wongによるgdanmakuの紹介です。gdanmakuはニコニコ動画のようなコメントを、スクリーン上に表示するアプリケーションで、LT会場からブラウザ経由でコメントを投稿していました。
2日間を通して、アニメが好きだとか、今度日本に行くけど、どこに行くべきか、次回は秋葉原で開催して欲しいといった話題が上がっていました。次回は台湾になりそうですが、より多くの人が日本から参加してもらえれば…と思います。(写真は主にボランティアのみなさん)
前回の投稿からずいぶんと間が開いてしまいました。桔梗です。
今回は珍しく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を利用した方がいいと思います。
12月30日(火) コミックマーケット87に参加します。場所は 西い35a です。
配布物は、いつもの Geeko Magazine を拡大した Geeko Magazine を予定しています。openSUSE について、盛りだくさんで貴重な1冊にしたいと考えていますのでよろしくお願いします。
現段階では次のような内容を予定しています。
詳細は決まり次第お知らせします
今回の Geeko Magazine の発行への貢献者を募集しています。
貢献して頂いた方には、できあがった Geeko Magazine を進呈します。
応募方法: コメント、Twitter、opensuse-ug のメーリングリスト、Facebook など何かしらの方法でお知らせ下さい。
記事の最終締め切り: 11月30日(ネタ枠はできるだけ早い方が良い)
フォーマット: テキストと画像など
レイアウトや文章等の調整はこちらで行います。
いつもの A4 1枚の Geeko Magazine とは異なり、ある程度の印刷代がかかる見込みです。多くの部数を作成すると、単価は安くはなります。(50部であれば500円程度)
そこで、どの程度需要があるかを調査するために、事前予約を受け付ける予定です。また会場・または関東エリアでは受け取れない人のために、各地方で欲しい人に頒布して頂ける方がいれば、ご協力をお願いします。
openSUSE.Asia Summit のレポートはもう少しお待ち下さい。