Discussion:
[mbrola] SIGSEGV wegen glibc-Problem
(zu alt für eine Antwort)
Malte J. Wetz
2003-08-27 12:25:04 UTC
Permalink
Hallo,

seit langer Zeit setze ich mbrola[1] problemlos auf meinen Rechnern ein
und hatte bisher nie irgendwelche Probleme.

[1] http://tcts.fpms.ac.be/synthesis/mbrola.html

Ohne erkennbaren Grund hat mbrola nun plötzlich aufgehört zu
funktionieren. Ruft man es auf (egal mit welchen Eingaben), so
produziert es eine Segfault.

Hier am Beispiel der Sprache de3 mit deren Demo-Phonemdatei:
,----
| ***@triton:~/mbrola-test$ ./mbrola-linux-i386 de3/de3 \
| de3/TEST/wetter.pho out.wav
| Speicherzugriffsfehler
`----

Laut strace (siehe unten) geht wohl ein llseek daneben, obwohl ich davon
ehrlich gesagt nicht so viel verstehe.

Das einzige, was mir als mögliche Ursache in den Sinn kommt, ist ein auf
meinem Debian Sid durchgeführtes »apt-get dist-upgrade«. Möglicherweise
führt eine aktualisiere Library hier zu Problemen.

,----
| ***@triton:~/mbrola-test$ ldd mbrola-linux-i386
| libm.so.6 => /lib/libm.so.6 (0x40030000)
| libc.so.6 => /lib/libc.so.6 (0x40052000)
| /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
`----

So viele kommen ja nun also nicht in Frage. Ich vermute also die libc6
(hier in der Version 2.3.2) als Stolperstein. Auf einem Debian Woody
mit Bunk-Erweiterungen (libc6 Version 2.2.5) funktioniert es nämlich
noch.

Die Google-Suche war erfolglos. Ich habe an die auf der Projekt-Homepage
für Bugreports angegebene Mail-Adresse geschrieben, aber bis jetzt
keine Antwort erhalten. Beim Versuch, die Mailingliste zu abonnieren,
kam eine Fehlermeldung:

,----
| mbrola-interest-***@tcts.fpms.ac.be
| SMTP error from remote mailer after end of data:
| host tcts.fpms.ac.be [193.190.210.105]: 552 Error:
| content rejected
`----

Gegenwärtig habe ich mir damit beholfen, die µClibc von
http://www.uclibc.org zu übersetzen und mbrola die 194K kleine libc via
LD_PRELOAD unterzuschieben. So geht es erstmal, wenn auch dummerweise
die "Datendurchreiche" via stdin und stdout, also ein »cat test.pho |
mbrola - -.wav | play« nicht mehr funktioniert und ich Dateien als
Puffer benutzen muss.

Hat jemand ähnliche Probleme und kann bestätigen, dass hier die libc das
Problem ist? Weiss vielleicht jemand eine bessere Lösung für das
Problem?

Der relevante Teil des strace-Logs lautet:

<---- snip ---->
open("de3/de3", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=11470107, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x40014000
read(3, "MBROLA2.060p\7\0\0V\246\0\0\224\224\256\0\"V\202\1g\000"...,
4096) = 4096
read(3, "\26\30t\0S\0\36\1\f\rt\0U\0E\3\17\20t\0Y\0\327\2\f\16t"...,
4096) = 4096
read(3, "\0\3\3\16\17C\0g\0008\4\22\23C\0h\0\35\6\21\22C\0i:\0\224"...,
4096) = 4096
read(3, "b\0E:\0\10\1\16\17b\0I\0\362\0\v\vb\0O\0\214\1\n\vb\0O"...,
4096) = 4096
read(3, "\0g\0a^\0g\0o~\0g\0o^\0j\0E~\0j\0E^\0j\0a~\0j"..., 4096) = 4096
brk(0x8093000) = 0x8093000
read(3, "\252\252\252\252\252\252\252\252\252\252\252\252\252\252"...,
4096) = 4096
read(3, "\252\252\252\252\252\252\252\252\252\252\252\252\252\252"...,
4096) = 4096
_llseek(3, -1276, [27396], SEEK_CUR) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
<---- snap ---->
--
http://www.malte-wetz.de (Linux: ISDN-Anrufbeantworter, Text-To-Speech,
ISDN-Inhaltsdatenkomprimierung, yapsrc für alle dt. Netze, Sondertasten
von Multimedia-Tastaturen)
Nabil Sayegh
2003-08-28 16:04:16 UTC
Permalink
Post by Malte J. Wetz
Hallo,
seit langer Zeit setze ich mbrola[1] problemlos auf meinen Rechnern ein
und hatte bisher nie irgendwelche Probleme.
[1] http://tcts.fpms.ac.be/synthesis/mbrola.html
Ohne erkennbaren Grund hat mbrola nun plötzlich aufgehört zu
funktionieren. Ruft man es auf (egal mit welchen Eingaben), so
produziert es eine Segfault.
,----
| de3/TEST/wetter.pho out.wav
| Speicherzugriffsfehler
`----
Hat jemand ähnliche Probleme und kann bestätigen, dass hier die libc das
Problem ist? Weiss vielleicht jemand eine bessere Lösung für das
Problem?
Selbe Probleme hier.
Habe es allerdings heute erst wieder seit langer Zeit benutzt.
Ich dachte erst die Fehler liegen daran, dass ich versuche die Datei
_nicht_ zu pipen.
Wenn ich naemlich pipe (bei beiden dateinamen <minus> angeben) gibt es
keine Fehlermeldung, allerdings meckert dann das abspielprogramm.

Wenn Du einen Fix findest => bitte mail an mich.
Malte J. Wetz
2003-08-28 17:34:28 UTC
Permalink
<veröffentlicht & per Mail versendet>
Post by Nabil Sayegh
Post by Malte J. Wetz
,----
| de3/TEST/wetter.pho out.wav
| Speicherzugriffsfehler
`----
[und Pipen der Ein-/Ausgabe funktioniert nicht]
Selbe Probleme hier.
Wenn Du einen Fix findest => bitte mail an mich.
Nachdem beim letzten Upgrade die libc6 wieder erneuert wurde (2.3.2-4,
voher 2.3.2-2), ist die Segfault verschwunden und die µClibc nicht mehr
nötig.

Das Pipen funktioniert aber immer noch nicht. Falls Du mein Skript
»speak« bzw. »mkulawmsg« verwendest: Ich habe eine angepasste Version
(v.2.3.6) auf meine Homepage geladen, die wahlweise über Pipes oder
einen Dateicache funktioniert. Letztere Einstellung funktioniert.
--
http://www.malte-wetz.de (Linux: ISDN-Anrufbeantworter, Text-To-Speech,
ISDN-Inhaltsdatenkomprimierung, yapsrc für alle dt. Netze, Sondertasten
von Multimedia-Tastaturen)
Loading...