FreeBSDを語れ Part38
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2014/07/14(月) 05:03:19.63The FreeBSD Project
http://www.freebsd.org/ja/
前スレ
FreeBSDを語れ Part37
http://peace.2ch.net/test/read.cgi/unix/1390323139/
関連スレ
初心者もOK! FreeBSD質問スレッド その118
http://peace.2ch.net/test/read.cgi/unix/1397057895/
0062名無しさん@お腹いっぱい。
2014/07/24(木) 07:49:55.38どの部分の表示でフリーズするとか絞り込んだり
できないかな
0063名無しさん@お腹いっぱい。
2014/07/24(木) 07:54:46.14Debian Jessieで正しく表示されるなら、LMDE(Linux Mint Debian Edition)や
Mint17やUbuntu14.04などのLiveDVDに入ってるLibreで編集できるかも知れん。
006454
2014/07/24(木) 08:43:18.72そう言う意味では切り分けはできています。
EPS file が貼られたファイルでフリーズが起こります。
FreeBSD の gs に問題があるのですかね?
でも、問題起こす EPS file も gv では問題なく表示されます。うーむ。
0065名無しさん@お腹いっぱい。
2014/07/24(木) 10:03:56.54コアがあればいいだけならシグナル送ってコアを吐かせればいい。
attachするのと変わらないと思うけど。
gdbでまともに見るには全部 -g つけるとか。WITH_DEBUGとか効くかな?
0066名無しさん@お腹いっぱい。
2014/07/24(木) 10:16:14.430067名無しさん@お腹いっぱい。
2014/07/24(木) 10:43:21.53スレッドまわりかなと思ってたが、waitと特定できてるの?
まあktraceしておくのは有効だよね。
0068名無しさん@お腹いっぱい。
2014/07/24(木) 11:07:09.150069名無しさん@お腹いっぱい。
2014/07/24(木) 14:24:05.170070名無しさん@お腹いっぱい。
2014/07/24(木) 15:10:41.98http://peace.2ch.net/test/read.cgi/unix/1390323139/974
彼はlibcが悪いの?とかトンチンカンな事言ってたが、
コレ見る分にはwait4で止まってたということらしい。
0071名無しさん@お腹いっぱい。
2014/07/24(木) 15:13:41.000072名無しさん@お腹いっぱい。
2014/07/24(木) 15:22:55.13コールスタック見ると長く待つ為のwait4が入る場所ではなさ気だから怪しくはある。
0073名無しさん@お腹いっぱい。
2014/07/24(木) 15:51:31.320074名無しさん@お腹いっぱい。
2014/07/24(木) 22:22:09.32誤報っつーか、それアプリケーション側のバグでしょw
SIGCHLDが飛ぶ機会が終了以外にもあるとか、シグナルの非同期性を理解してないコーディングになってたりとか。
0075名無しさん@お腹いっぱい。
2014/07/25(金) 00:07:52.53デフォルトになったというか、tetexがバンバン消されていっているようなんですが、
これってちょっと変化が急激すぎやしませんかね?
今後、日本語tex環境を入れようとしたら、これっていうメタポートはあるんだろうか
0076名無しさん@お腹いっぱい。
2014/07/25(金) 00:24:03.36俺はもっとやれ派
0077名無しさん@お腹いっぱい。
2014/07/25(金) 00:55:02.51マリオ動かしたり飛行機操作する方が楽しいのに
0078名無しさん@お腹いっぱい。
2014/07/25(金) 00:56:32.220079名無しさん@お腹いっぱい。
2014/07/25(金) 08:06:30.74個人的には
print/texlive-full
を使っているが
いらない機能までインストールしすぎ
という悪寒もある
008054
2014/07/25(金) 13:28:10.25ktrace しながらフリーズさせてキルして見ました。
http://fast-uploader.com/file/6961817882204/
何か分かるでしょうか?
0081名無しさん@お腹いっぱい。
2014/07/25(金) 15:50:53.19REPLACE_ORIGINが効かなくなってない?
0082名無しさん@お腹いっぱい。
2014/07/27(日) 16:31:29.811 名前:番組の途中ですがアフィサイトへの転載は禁止です :2014/07/27(日) 14:50:44.27 ID:Pune7i/30 BE:469226128-2BP(1000)
Wikipedia Foundation : 妨害工作の多発で米国議会による編集行為を一時的禁止
Posted 12 hours ago, by Scott Newman
Wikipedia Foundationは、米国議会のIPアドレスによる編集妨害工作が多発したことを理由に、
一時的に米国議会のIPアドレスを用いた匿名での項目の編集を禁止する措置を講じたことがBBCなどの報道により明らかとなった。
今回の措置は10日間の一時的措置となる。また、編集が禁止となるのは米国議会のIPアドレスを用いた匿名による編集に限られており、
米国議会のIPアドレスを用いた場合であっても登録されたユーザーIDを用いて編集を行う場合には、規制の対象とはならない。
米国議会のIPアドレスによる編集妨害工作が多発する状況となったのは、米国議会のIPアドレスから編集が行われた場合、
その内容を自動的にTweetする@congresseditsによって公然化したものとなる。
米国議会のIPアドレスからは、ドナルド・ラムズフェルド元国防長官は「爬虫類のエイリアン(alien lizard)」、
ケネディー大統領の暗殺は「カストロ政権の意向により実施された」、ウクライナの政治家のナタリヤ・ヴィトレンコは「ロシア政府の傀儡」といった書き込みが続くなど、
Wikipedia Foundation では以前から米国議会関係者に対して、編集妨害工作を行わないように警告を発してきた。
中略
一方、米国議会関係者からは「2、3名の関係者がそうした行為を行ったからといって、9000名の議会スタッフ全員の編集を禁止する措置を講じるのはいかがなものか?
私が知っている範囲で周りの人がやっている編集は、記事の文法上のミスや、野鳥に関わること、また、KDE2やFreeBSDに関わる事柄などです」
とするUser talkがあるなど、コミュニティーによる容易な規制発動に対して批判を加えている。
ソース全文
http://www.businessnewsline.com/biztech/201407270142340000.html
自動的にTweetする@congressedits
https://twitter.com/congressedits
0083名無しさん@お腹いっぱい。
2014/07/27(日) 20:06:01.28obsolete過ぎて危ないのに、直ぐには消せないからということで
むしろここまですごく時間を掛けてやっと辿りついたっていう印象なんだけどなあ。
0084名無しさん@お腹いっぱい。
2014/07/28(月) 14:56:13.95ようやく満足に動く環境が出来た。
・sysinstallドコー、mount_ntfsドコー
・pkg bootstrapてどうよ
から始まってC++とRubyの開発環境が揃うまで長かった……
メモリイメージ焼いたDVDからパッケージを適当に入れて、
特に興味のある物はソースからインストールという昔ながらの方法でやったが、
そろそろ限界かな。
clangとgccの互換性は高いが混ざると落ちることもあるみたい。
色々勉強になったからよしとしよう
0085名無しさん@お腹いっぱい。
2014/07/28(月) 19:34:51.430086名無しさん@お腹いっぱい。
2014/07/28(月) 19:47:07.42pkg 1.3.2では pkg repo でtbzを認識してくれません
対処方法はありますでしょうか?
0087名無しさん@お腹いっぱい。
2014/07/28(月) 23:27:13.430088名無しさん@お腹いっぱい。
2014/07/29(火) 01:08:14.70portsが使えるからまだ大丈夫だよ
0089名無しさん@お腹いっぱい。
2014/07/29(火) 13:30:19.38pkg 何かアレなことになってるん?
0090名無しさん@お腹いっぱい。
2014/07/29(火) 19:43:17.01009180
2014/07/29(火) 20:59:39.90フリーズする直前に実行している下の部分の、"write 4096 byte" の 4096 がおかしいです。
EPSファイルを読み込んでフリーズが起きるのですが、フリーズしない場合を ktrace で見ると、
そこの数字が正しいファイルサイズになっています。一方、フリーズする場合は、
実際のファイルサイズより小さい 4096 になっていて、中身の途中までしか write されていないのが見て分かります。
これが原因で wait が起きているように思えます。ファイルサイズを間違える原因はまだ分かってません。
ファイルサイズの問題でしょうか?例えば、フリーズしないのが tgif で作った 3K のファイルで、
するのが gnuplot で作った 11K のファイルです。もう少し調べてみます。
-------------------------------------------------
1140 soffice.bin GIO fd 51 wrote 4096 bytes
"%!PS-Adobe-2.0 EPSF-2.0
-----------------------
cut
-----------------------
/Circle { stroke [] 0 setdash 2 copy
hpt 0 360 arc stroke Pnt } def
/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def
/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def
/C1 { BL [] 0 setdash 2 copy moveto
2 copy vpt 0 90 arc closepath fill
vpt 0 360 arc closepath } bind def
/C2 { BL [] 0 setdash 2 copy moveto
2 "
-----------------------------------------------------------------
0092名無しさん@お腹いっぱい。
2014/07/29(火) 21:49:38.874KBピッタリって辺りからして、4KBずつ書き込むんじゃね?
次の4KBを書き込む為の条件が満たせないと固まるとか。
0093名無しさん@お腹いっぱい。
2014/07/29(火) 21:57:09.64なるほど。確かにそうですね。
次を書き込む為の条件を調査してみます。
と言っても、全然あてはないのですが...
0094名無しさん@お腹いっぱい。
2014/07/29(火) 21:58:16.930095名無しさん@お腹いっぱい。
2014/07/29(火) 23:52:07.440096名無しさん@お腹いっぱい。
2014/07/30(水) 05:32:01.130097名無しさん@お腹いっぱい。
2014/07/30(水) 06:34:45.00特定したならパッチを投げてあげてくれ。
0098名無しさん@お腹いっぱい。
2014/07/30(水) 09:38:00.19どっかに買いてないですかね?
Ubuntuと同じデスクトップでいいので
0099.
2014/07/30(水) 10:04:14.79普段はmateかlxdeだし。
0100名無しさん@お腹いっぱい。
2014/07/30(水) 11:17:09.13ログインマネージャーは使ってますか?
0102名無しさん@お腹いっぱい。
2014/07/30(水) 13:00:03.13gdm 入れると gnome2 がほぼ全部入ってしまうけど気にしない、と言うスタンスでしたっけ。
010480
2014/07/30(水) 13:18:52.10作ったソフトに関係なく、 4KB を越える EPS を貼ると、必ずフリーズする事がわかりました。
4KB 未満の EPS ならフリーズしません。また、4KB を越えても jpeg と png はフリーズしませんでした。
>>96
原因は送った先にあると言うことでしょうか?
FreeBSD の ghostscript9 が win や linux のと違う振る舞いをする、とかですか?
0105名無しさん@お腹いっぱい。
2014/07/30(水) 13:19:11.62http://www.freebsd.org/doc/ja/books/handbook/x11-wm.html
とか
0106名無しさん@お腹いっぱい。
2014/07/30(水) 13:22:50.59サイズを4KBの倍数になるようパディングしたら正常に動作したりして
010784
2014/07/30(水) 14:25:05.34力技を使えばできるよ。
まず、インストール用に配布されてるISOイメージの中で一番でっかいのをDVD-RAMに焼く。
こいつには(ちょっと古いしい色々足りないけど)Xとかある程度のpkgが含まれていて、
bsdconfigにもちゃんとCD/DVDからインストールするメニューがある。
もっともネット未接続だとpkg bootstrapがWebを観にいって失敗するんだが...
実はDVD上にも(ちょっと古いけど)pkgをtxz化したファイルが存在するので、
/etc/pkg/FreeBSD.confを書き換えてローカルファイルを読み込むように設定した上で、
名前も変更してファイル置いとけば、
pkg bootstrapも成功してDVD内の全pkgをインストールできるようになるよ。
正直オススメはしないが。
0108名無しさん@お腹いっぱい。
2014/07/30(水) 19:31:52.29以下想像:
パイプかなんかで送っててパイプのバッファサイズが4KBしかない。
そこにwrite一発でファイル全体を送ってしまって、
書けた量を確認せず、waitでそのパイプ先の終了を待っている。
パイプ先は次の4KBが来るのを待っている。
0109104
2014/07/30(水) 20:56:02.85その場合、直すべきは一発でファイル全体を送っているところでしょうか?
LibreOffice の source にバグがある?
0110名無しさん@お腹いっぱい。
2014/07/30(水) 20:57:06.72関連しそうなとこは
filter/source/graphicfilter/ieps/ieps.cxx の RenderAsBMPThroughGS() で、
gsのコマンドライン作って、RenderAsBMPThroughHelper() を呼んで、
中で runProcessWithPathSearch() でプロセス作って、
osl_writeFile() で pBuf 内のデータを nBytesRead バイトだけ書き込んでる。
sal/osl/unx/file.cxx 内の osl_writeFile() は書けたバイト数を管理してるように読める。
なので、デバッガかデバッグプリントつっこんで、
nBytesRead が正しいファイルサイズになってるかどうか調べてみたらいいんじゃないかな。
で、これが 4096 とかになってたら、その原因を探っていけばいい。
EPSを読むところがおかしいという可能性がある。
俺は今自由に動かせる 10-R がないので、これ以上は無理。
0111名無しさん@お腹いっぱい。
2014/07/30(水) 21:19:56.870112104
2014/07/31(木) 02:13:19.12わかりました。その辺り調べてみます。
ようやく原因が絞れて希望が出てきました。
>俺は今自由に動かせる 10-R がないので、これ以上は無理。
ちなみに、私の今のテスト環境は 9.3R です。
LibreOffice 4.2.5.2 がフリーズするのは 10.0R も 9.3R も同じでした。
0113名無しさん@お腹いっぱい。
2014/07/31(木) 10:11:29.46面白そうなんで自分も見てみた。
RenderAsBMPThroughHelper()って、これダメじゃないか?
osl_writeFile()に渡してる引数&nCountでwrite()で書けたバイト数を貰ってくるが、
パイプから読むのは
if (nCount == nBytesRead)
の場合だけじゃん。
nCount != nBytesReadのときは子プロセスの出力読まずに終了待ちしようとするみたいだし。
0114104
2014/07/31(木) 11:31:27.04>面白そうなんで自分も見てみた。
ありがとうございます。自分はC言語が得意ではないので助かります。
>RenderAsBMPThroughHelper()って、これダメじゃないか?
>osl_writeFile()に渡してる引数&nCountでwrite()で書けたバイト数を貰ってくるが、
>パイプから読むのは
>if (nCount == nBytesRead)
>の場合だけじゃん。
>nCount != nBytesReadのときは子プロセスの出力読まずに終了待ちしようとするみたいだし。
この問題で、4KB未満のEPSファイルではフリーズせず、
4KBを越えるとフリーズするのが説明できるでしょうか?
また、修正案はあるでしょうか?
いただければ、反映させて LibreOffice を make して試してみます。
0115名無しさん@お腹いっぱい。
2014/07/31(木) 11:32:55.41Ubuntuと同じって言っても...
GTK+3系のにしたいのなら、PC-BSDにでもしたら?
FreeBSDをPC-BSDにする方法は以下のURL
http://wiki.pcbsd.org/index.php/Turn_FreeBSD_into_PC-BSD%C2%AE
0116名無しさん@お腹いっぱい。
2014/07/31(木) 12:02:21.000117名無しさん@お腹いっぱい。
2014/07/31(木) 12:19:55.30> 修正案はあるでしょうか?
丸投げしすぎ。
どの言語であれ、ブレークポイント掛けてデバッガでトレースしていくか、
printfなりなんなりをつっこんで、ちまちまデバッグしていくのが、発見者の努め。
言語による差異なんてほとんどない。
0118名無しさん@お腹いっぱい。
2014/07/31(木) 12:21:34.53って、自分では何やったんだよ。
0119名無しさん@お腹いっぱい。
2014/07/31(木) 12:52:06.14違う。俺が書いたURLを見てみな。
FreeBSDをインストールしたあとに、PC-BSDやTrueOSにするには、どうしたら良いのかが書いてある。
別にzfsにする必要はない。
0120名無しさん@お腹いっぱい。
2014/07/31(木) 13:21:55.34Ubuntuは無理なのでGnome shellになると思いますが
まっさらな状態からなので、PC-BSDにしたいのならPC-BSD入れます
FreeBSD2.1から使ってる頭から見るとPC-BSDはかなり違うので
出来ればFreeBSDにUnityみたいなインターフェイスを入れたいと思ったのですが…
もしかして、これを入れればいいのかな
/usr/ports/x11/gnome-shell
これだけだと、ビジュアルシェルだけしか入らないような
0121名無しさん@お腹いっぱい。
2014/07/31(木) 13:49:51.00自分も1.1時代から遊んでいますよ。
PC-BSDも10系になってからports,pkgを積極的に使うようになっています。
ですから、さほど違和感があるってほどじゃないと思いますよ。
Unityは無理ですが、Gnome3やCinnamonならPC-BSDのports treeを持ってきてbuildしたり、先に示したリンク中にあるpkgのreposなどを追加してpkg installで入れるという方法もあります。
pcdmはqt4関連を入れてから、gitでソースを持ってきてbuildしてあげればOKです。
まっさらなら、FreeBSDのportsとPC-BSDのportsとバージョンがバッティングしないはずなので、それでやってみるのはどうでしょう?
0122名無しさん@お腹いっぱい。
2014/07/31(木) 14:01:06.11PC-BSDでports, pkgが使えるのですか
それならまずPC-BSDをやってみようかな
0123名無しさん@お腹いっぱい。
2014/07/31(木) 15:10:19.62お節介ついでなのですが、PC-BSDのISOを落としてきてインストールすると、
/usr/local/pkg/repos/pcbsd.conf
のURLのバージョン部分が10-STABLEになっているんじゃないかと思います。
なんかフォルダ名を変えたみたいで、url=の部分を以下のように書き換えると
pkgが正常に動作するようになると思います。
url: "http://pkg.cdn.pcbsd.org/10.0-STABLEJULY2014/amd64"
あとPCDMはgitじゃなくてsvnでしたね...
0124名無しさん@お腹いっぱい。
2014/07/31(木) 18:06:09.96> また、修正案はあるでしょうか?
> いただければ、反映させて LibreOffice を make して試してみます。
と言うけど、Libre環境は仕事で必要なんじゃなかったっけ?
自分で修正してフリーズは回避できても、そういう場合
得てして潜在的に他にもおかしな処理があるかも知れない。
それが目に見えて分かるフリーズとかではなく、情報(計算数値など)
が微妙に間違って表示されるようなものだったとしたら、
仕事になんか安心して使えない。
0125名無しさん@お腹いっぱい。
2014/07/31(木) 19:19:49.7420055 a.out GIO fd 1 wrote 4096 bytes
...
20055 a.out RET write 1048576/0x100000
ってなる。write() の書けたバイト数は、RET の行を見ないといけないな。
wrote 4096 bytes は、その分だけ表示してるってだけの意味に考えた方がいい。
というわけで、振り出しに戻る。
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int nBytesWritten;
char *p = malloc(1024*1024);
memset(p, 'x', 1024*1024);
nBytesWritten = write(1, p, 1024*1024);
fprintf(stderr, "%d bytes\n", nBytesWritten);
return 0;
}
0126名無しさん@お腹いっぱい。
2014/07/31(木) 19:44:24.69パイプサイズ自体は4096byteのはずだけど、syscall内部でうまく計らってるのか??
0127名無しさん@お腹いっぱい。
2014/07/31(木) 19:52:42.01それはFreeBSDも同じ。問題はパイプの read() だろ。
0128名無しさん@お腹いっぱい。
2014/07/31(木) 20:09:51.92ちょっと前が 64kB
もっと前が 4kB
0129名無しさん@お腹いっぱい。
2014/07/31(木) 20:16:46.90生のktrace.outが欲しいわ。
タイムスタンプとかスレッドIDとか入ってるやつ。
でないと、CALLとRETの対応がつかなくて困る。
0130名無しさん@お腹いっぱい。
2014/07/31(木) 20:25:53.08http://www.atmarkit.co.jp/ait/articles/1209/07/news125.html
> 例えばFreeBSD 10-CURRENTでは、パイプで使われるページ可能な
> カーネルメモリを使ったパイプのバッファサイズは、4KBから64KB
> の間で可変になっている。
> write(2)でどれだけ一気に書きこんでも、read(2)で読み込まれる
> サイズの上限が64KBに制限されている
0131名無しさん@お腹いっぱい。
2014/07/31(木) 22:11:49.30LibreOfficeですらこんな糞コーディングしちゃってることのがショックだ。
0132名無しさん@お腹いっぱい。
2014/07/31(木) 22:12:41.660133名無しさん@お腹いっぱい。
2014/07/31(木) 22:33:18.300134名無しさん@お腹いっぱい。
2014/07/31(木) 22:47:06.92ttp://docs.libreoffice.org/filter/html/ieps_8cxx_source.html#l00285
これか。
306行目でパイプ閉じてるから、向こうも書けなくなって落ちるのを期待してるのかもしれん。
落ちてくれない相手だと終了待ちで止まることになるかもしれんが……この可能性は低い、かな。
で、これだと書き込み中に相手プログラムがパイプに応答返してきた場合は、
受け取りしないからパイプバッファが足りなくなってエラーまたはデッドロックだな。
osl_writeFileとかのパイプバッファ溢れの挙動がよく分からんけど、
この周辺にprintfデバッグ仕込んで走らせれば何が起きてるかは分かるね。
あとosl_writeFileのソースが見つからないけど、この中で分割書き込みしてあるかどうかかな…
>>125
write単発4KBで止まってるならその周辺って事で戻ってねぇと思うけど
>>131
OOoからの派生だが、OOoのコード(安定性含む)って評判良かったか?
マシなコードにするって目標が合っても、それが追いつくかどうかは別の話だと思う。
0135名無しさん@お腹いっぱい。
2014/07/31(木) 23:31:24.37>write単発4KBで止まってるならその周辺って事で戻ってねぇと思うけど
すまんが何言いたいのかわからん
0136104
2014/08/01(金) 00:18:08.90遅くなりました。ktrace.out アップロードしました。
新しく取り直したものです。3MB あります。
http://fast-uploader.com/file/6962374997550/
0137104
2014/08/01(金) 00:28:41.66私が確認したのは amd64 だけです。
前スレに同じ様にフリーズする人が何人かいたのですが、どちらか聞き損ねました。
フリーズを起こすのは簡単です。
10R か 9.3R に LibreOffice 4.2.5-2 を入れて、
4KB を越える EPS ファイルを impress で挿入するだけです。
ダイヤログで「開く」を押した瞬間にフリーズします。
preview が on になっていると、選択しただけでフリーズします。
0138104
2014/08/01(金) 00:36:27.07常用している PC には 9.1R + LO 3.5.6.2 を残してあります。
9.3R や 10.0R を入れて試しているのは予備機の1つです。
LO4 が安心して使えないのは同意です。
でも、9.3R にも 10R にも LO4 しかないのです。
0140名無しさん@お腹いっぱい。
2014/08/01(金) 05:52:13.29今どきcommit前にレビューのないプロジェクトって……
0141名無しさん@お腹いっぱい。
2014/08/01(金) 06:27:09.350142名無しさん@お腹いっぱい。
2014/08/01(金) 10:53:05.62それで256Kになったんですね
わかります。w
0143104
2014/08/01(金) 11:42:06.13私がもう少し大きな EPS でテストして貰ってたら、同じ様にフリーズしてたのか。。。
win でどうか、大きな EPS を作って試して見ます。
0144名無しさん@お腹いっぱい。
2014/08/01(金) 11:48:24.21とりあえず現時点まとめ。
1120 100087 soffice.bin 1406819284.268085 CALL write(0x31,0x815414000,0x4797)
1120 100281 soffice.bin 1406819292.199891 PSIG SIGTERM caught handler=0x80083
0b90 mask=0x0 code=0x10001
1120 100087 soffice.bin 1406819292.200801 GIO fd 49 wrote 4096 bytes
1120 100087 soffice.bin 1406819292.200812 RET write 18327/0x4797
という流れなんで、スレッド10087がwrite()を呼んだあと、
SIGTERMが来るまでそれが終わっていないことがわかる。
SIGTERMで受け取り側が刺激されて完了するか死ぬことで、write()が完了している。
とりあえずwrite()を完了させるために、gsに細工してみてくれないか?
/usr/local/bin/gs は gsc へのリンクになっていると思うけど、
これを
#!/bin/sh
cat >/tmp/gs$$
gsc "$@" </tmp/gs$$
rm -f /tmp/gs$$
というシェルスクリプトに変更して試してみてくれ。
0145名無しさん@お腹いっぱい。
2014/08/01(金) 12:12:40.57selectなりしながらread/writeするのがありがちなのかな。
スレッド作っちまえって話もあるか。
0146104
2014/08/01(金) 12:17:18.50変えてみました。結果、フリーズなくなりました!
それどころか、正常に画像が表示されました。不思議です。
source を見ると、RenderAsBMPThroughGS() と RenderAsBMPThroughConvert()
のどちらかを実行するようになっているので、Convert の方が実行されたのでしょうか?
とにかく、大きな前進です。
0147名無しさん@お腹いっぱい。
2014/08/01(金) 12:21:45.14gsからのバッファがあふれて入力を止めてしまうってことがあるだろうか。
内部でレンダリングが完了しないと、BMPの出力なんて始められないと思うんだけど。
まあでも、そういう可能性も考慮してLO作れって話ではある。
0148名無しさん@お腹いっぱい。
2014/08/01(金) 12:53:12.30> source を見ると、RenderAsBMPThroughGS() と RenderAsBMPThroughConvert()
> のどちらかを実行するようになっているので、Convert の方が実行されたのでしょうか?
なんでそうなんだよ
0150名無しさん@お腹いっぱい。
2014/08/01(金) 13:03:16.65PostScriptインタプリタは普通に作れば、入力が全部来てから処理を始めるなんていう
間抜けな構成にはならない。
届いたところまで評価して出力する構成になるのが普通。
0151名無しさん@お腹いっぱい。
2014/08/01(金) 13:20:10.05そうなの?
最後まで各ピクセル値が確定しないように思うんだけど。
最後の最後に、あ、この線も追加で引いてなんてコード書けるでしょ。
0152名無しさん@お腹いっぱい。
2014/08/01(金) 15:53:31.50VirtualBoxに10.0入れてやってみたら、図が表示されないけど、フリーズしない。
9.2を9.3に上げてLOもGSも入れ直してみたら、フリーズしない。
どっちも64ビット。
0153名無しさん@お腹いっぱい。
2014/08/01(金) 15:55:52.00ぐっじょぶ!
>>150
詰まったパイプが出力段か入力段が分からんとなんとも言えん気もするが…
処理は開始できるけど、出力の頭辺りが確定しないと出力を始められないよ。
>>151
PSだとshowpageとかでページ確定してしまえばそのページは出力できるけど、EPSではどうなるやら
0154名無しさん@お腹いっぱい。
2014/08/01(金) 16:39:30.46#!/bin/sh
(cat; echo done >&2) | gs -q -dBATCH -dNOPAUSE -dPARANOIDSAFER -dEPSCrop -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300x300 -sDEVICE=bmp256 -sOutputFile=- - | (sleep 10; cat)
./lotest.sh < sinxplot.eps > sinxplot.bmp
って実行したら、すぐに done って表示される。10秒待って BMP が生成される。
つまりパイプへの出力バッファが埋まったから入力が中断されてるってわけではない。
でも、もしかすると、フリーズする環境ではこれはどうなるんだろう。
>>104 試してみて。gs は>>144の修正する前の gsc へのリンクね。
0155名無しさん@お腹いっぱい。
2014/08/01(金) 16:40:39.410156名無しさん@お腹いっぱい。
2014/08/01(金) 16:41:49.200157名無しさん@お腹いっぱい。
2014/08/01(金) 16:46:18.210158104
2014/08/01(金) 16:56:01.15もとの gs に戻して、LO がフリーズする様に戻してから、やってみました。
./lotest.sh: 2: Syntax error: Bad fd number
と表示され、10秒後に終わって、bmp 1.5MB ができました。
できた bmp を表示してみると、サイズが大きくなっている以外は正常でした。
0159名無しさん@お腹いっぱい。
2014/08/01(金) 16:57:46.14>>156
0160104
2014/08/01(金) 16:58:45.27ghostscript9-9.06_7
Name : ghostscript9
Version : 9.06_7
■ このスレッドは過去ログ倉庫に格納されています