Closed Bug 253835 Opened 21 years ago Closed 17 years ago

thunderbird loops forever reading a FIFO signature file

Categories

(Thunderbird :: Message Compose Window, defect)

x86
Linux
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 62993

People

(Reporter: ka0ttic, Unassigned)

Details

(Keywords: crash, hang)

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040626 Firefox/0.9.1 Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040626 Firefox/0.9.1 When setting your signature file to a named pipe (FIFO), Thunderbird crashes when opening a new compose window (when it attempts to open the signature file). Running strace on thunderbird while this happens, shows that it's calling lseek(). which of course, you cannot do on a pipe. There are quite a few random signature generators out there that use named pipes (including the one I am coding for the hell of it ;p), so it'd be a shame if this wasn't fixed. Reproducible: Always Steps to Reproduce: 1. mkfifo ~/.signature 2. fortune > ~/.signature 3. make sure signature file option in thunderbird is set to fifo 4. open compose window Actual Results: Thunderbird totally freezes. Responds to SIGTERM, however. Expected Results: Opened signature file (fifo), read til EOF, close() And of course, not crashing. I'd post all the strace output, but my ~10s trace results in a ~24M file! # grep -A5 -B5 ".signature" thunderbird.strace 43797 read(31, "Generated File. Do not edit.\n\n[H"..., 65) = 65 43798 close(31) = 0 43799 access("/home/ka0ttic/.mozilla", F_OK) = 0 43800 access("/home/ka0ttic/.mozilla/plugins", F_OK) = -1 ENOENT (No such file or directory) 43801 access("/opt/thunderbird/plugins", F_OK) = -1 ENOENT (No such file or directory) 43802 stat64("/home/ka0ttic/.signature", {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 43803 stat64("/home/ka0ttic/.signature", {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 43804 open("/home/ka0ttic/.signature", O_RDONLY|O_LARGEFILE) = 31 43805 lseek(31, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 43806 stat64("/home/ka0ttic/.signature", {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 43807 close(31) = 0 43808 stat64("/home/ka0ttic/.signature", {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 43809 open("/home/ka0ttic/.signature", O_RDONLY|O_LARGEFILE) = 31 43810 lseek(31, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 43811 lseek(31, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 43812 lseek(31, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 43813 lseek(31, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 43814 lseek(31, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
Err, forgot: using thunderbird 0.7.1
Aaron: Could you provide TalkBack incident ID?
Severity: normal → critical
Keywords: crash
Adam, Tell me how to do so, and I'd be glad to. Cheers
Talkback is a component of Mozilla Thunderbird which, when installed, automatically comes up after a Thunderbird crash and asks you to send some data to Mozilla. To use Talkback: - you must download a talkback-enabled build (offical builds from Mozilla.org) - you must have selected talkback for install at install time - you must enable it after a crash (it is then waiting in the task bar) - you must click at submit button to send the report, or cancel to not send. When a report is send, the server sends back a talkback ID. You can see this id, if you start talkback in your Thunderbird components directory. You can do so, while Thunderbird is running, and give this number here in a comment.
> To use Talkback: > - you must download a talkback-enabled build (offical builds from Mozilla.org) > - you must have selected talkback for install at install time > - you must enable it after a crash (it is then waiting in the task bar) > - you must click at submit button to send the report, or cancel to not send. I've tried countless times to get this to work, but to no avail. The only thing I can think of is #3 above "you must enable it after a crash (it is then waiting in the task bar)". I have no task bar (not everyone has a taskbar), so maybe thats it?
would need to convert this code from using a file spec based input stream (which does all those seeks) to an nsILocalFile based input stream, which shouldn't do seeks...
Assignee: mscott → bienvenu
Status: UNCONFIRMED → NEW
Ever confirmed: true
Still interested in the talkback? I compiled from thunderbird-source-0.8.tar.bz2, but I couldn't see anything about talkback. Is there an option somewhere? Anyway, anybody should be able to see the behaviour. Just make a fifo and point your sig at it. Its happened with every version of mozilla and thunderbird that I've used... at least for as many as I've bothered checking to see if its fixed or not!
*** This bug has been marked as a duplicate of 259482 ***
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → DUPLICATE
iaindb@netspace.net.au: you can't build talkback. build --disable-optimize, don't strip symbols, run w/ ./thunderbird -g -d gdb run (wait for crash) where info threads thread <fromlist> where i don't think this is a valid duplicate
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
> I've tried countless times to get this to work, but to no avail. The only thing > I can think of is #3 above "you must enable it after a crash (it is then waiting > in the task bar)". I have no task bar (not everyone has a taskbar), so maybe > thats it? They were assuming, regardless of your UA string, that you are using windows. TalkBack is a proprietary (Netscape owned, I believe) program that only runs on windows. It's a shame, really. I suppose that a similar program could be made using gdb and something a simple as a perl script to send it to a server, but I don't forsee that happening anytime soon. By the way, I don't see how this is related to bug 259482. This is related to thunderbid trying to seek in a fifo, while 259482 is related to reading a file with a certain format of name.
Kris Maglione: Talkback (or Mozilla Quality Feedback Agent) is proprietary, but great program running also on Linux and Mac OS X. You have to select it in Custom instalation, otherwise it isn't installed.
(In reply to comment #11) > Kris Maglione: Talkback (or Mozilla Quality Feedback Agent) is proprietary, but > great program running also on Linux and Mac OS X. You have to select it in > Custom instalation, otherwise it isn't installed. Sorry, then. I searched for a linux version previously and couldn't find it. I'm guessing, then, that you have to use the linux binary installer. Am I correct? I have never seen the option in a build or package install. Is there a way to include it in a custom build?
Talkback in custom build isn't usefull - it doesn't export symbols of this build to Talkbak server. If you wanna take advantages of Talkback, you have to use official build. As Window user I'm not sure in which Linux package variants is Talkback included, but you can always look to components subdirectory for anything named "talkback".
As much as I hate adding a "Me Too" comment. I think it is worth pointing out that this is still happening in the 1.0 released version for Linux. I'd like to second the comment that some of us use signature generation programs. If it weren't for the fact that I had gone through quite a bit of effort to convert my Sylpheed mailboxes over to Thunderbird, I might have gone right back to Sylpheed when the Compose window locked up the program. I finally tracked it to this issue as well.
This still happens with the latest Thunderbird 1.5beta1.
Still happens in RC1 (20051201)... I should also mention that Thunderbird doesn't actually *crash* but seems to enter an infinite loop, so there's no TalckBack incident created. Anybody?
Flags: blocking1.8.0.1?
this is not something we are going to address for the security release.
Flags: blocking1.8.0.1? → blocking1.8.0.1-
> this is not something we are going to address for the security release. This is something you should've addressed for 1.8
Keywords: hang
For the record, this is still happening in 1.5.0.8 (20061107). Here's the relevant part of my strace. stat64("/home/utoddl/.signature", {st_mode=S_IFIFO|0644, st_size=0, ...}) = 0 open("/home/utoddl/.signature", O_RDONLY|O_LARGEFILE) = 35 lseek(35, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) _llseek(35, 0, 0xbfa1f0b8, SEEK_CUR) = -1 ESPIPE (Illegal seek) _llseek(35, 0, 0xbfa1f0b8, SEEK_CUR) = -1 ESPIPE (Illegal seek) _llseek(35, 0, 0xbfa1f0b8, SEEK_CUR) = -1 ESPIPE (Illegal seek) _llseek(35, 0, 0xbfa1f0b8, SEEK_CUR) = -1 ESPIPE (Illegal seek) _llseek(35, 0, 0xbfa1f0b8, SEEK_CUR) = -1 ESPIPE (Illegal seek) _llseek(35, 0, 0xbfa1f0b8, SEEK_CUR) = -1 ESPIPE (Illegal seek) _llseek(35, 0, 0xbfa1f0b8, SEEK_CUR) = -1 ESPIPE (Illegal seek) [...repeats the above line forever...]
todd_lewis@unc.edu: thanks for volunteering please read, and *FOLLOW* the directions in Comment 9.
Assignee: bienvenu → todd_lewis
Status: REOPENED → NEW
(In reply to comment #20) > todd_lewis@unc.edu: thanks for volunteering > please read, and *FOLLOW* the directions in Comment 9. > timelesss, Thunderbird doesn't crash, it just enters a infinite loop... look at the strace outputs.
(In reply to comment #20) > todd_lewis@unc.edu: thanks for volunteering > please read, and *FOLLOW* the directions in Comment 9. You're welcome. It doesn't crash, so the "wait for crash" step in Comment 9 takes too long (like, forever). But since you asked so nicely, I do have a stack backtrace for you. Behold: (gdb) bt #0 0x00e59402 in ?? () #1 0x0011b4e4 in lseek64 () from /lib/libpthread.so.0 #2 0x00c9f498 in PR_Now () from /usr/lib/libnspr4.so #3 0x00c9cde2 in PR_GetConnectStatus () from /usr/lib/libnspr4.so #4 0x00c825c9 in PR_Seek64 () from /usr/lib/libnspr4.so #5 0x002d2bfb in FileImpl::Tell (this=0xa2aaa40, outWhere=0xbf98ee04) at nsIFileStream.cpp:502 #6 0x002d1eaa in nsRandomAccessStoreClient::tell (this=0xbf98ee84) at nsFileStream.h:406 #7 0x002d11d6 in nsRandomAccessInputStream::readline (this=0xbf98ee64, s=0xbf98ee8c "\fZ,", n=512) at nsFileStream.cpp:231 #8 0x025479f1 in nsMsgI18NParseMetaCharset (fileSpec=0xbf98f3b8) at nsMsgI18N.cpp:339 #9 0x02669ba8 in nsMsgCompose::LoadDataFromFile (this=0xa247d48, fSpec=@0xbf98f3b8, sigData=@0xbf98f300) at nsMsgCompose.cpp:3385 #10 0x0266a78c in nsMsgCompose::ProcessSignature (this=0xa247d48, identity=0x9a9d688, aQuoted=0, aMsgBody=0xbf98f4cc) at nsMsgCompose.cpp:3554 #11 0x0266990d in nsMsgCompose::BuildBodyMessageAndSignature (this=0xa247d48) at nsMsgCompose.cpp:3658 #12 0x02669780 in nsMsgCompose::InitEditor (this=0xa247d48, aEditor=0xa258248, aContentWindow=0xa1f8518) at nsMsgCompose.cpp:1377 It goes on, but the relevant parts are there. The signature file is a named pipe, and it spends the rest of forever trying and failing (ESPIPE) to seek on that pipe. Hope this helps.
I just wanted to add a comment, in case anybody ever cares to implement the easy fix for this bug, that the solution is in comment #6 above, and has been sitting there since August 2004.
QA Contact: message-compose
Not quite sure how this got assigned to me. Reassigning to default.
Assignee: todd_lewis → nobody
Summary: thunderbird crashes when attempting to read a signature file that is a FIFO → thunderbird loops forever reading a FIFO signature file
doesn't hang in tbird trunk 2007102813 with the instructions in comment 0. fortune exits when the compose window comes up so presumably its output got gobbled up. I don't see any signature text though, unlike with a regular file.
It's still doing it in thunderbird-2.0.0.14 on Fedora 8, fwiw.
This is bug 62993. Would be interesting to know if it still happens on trunk. Please comment in that bug if you get to testing it. http://www.mozillamessaging.com/en-US/thunderbird/early_releases/ http://ftp.mozilla.org/pub/mozilla.org/thunderbird/nightly/latest-trunk/
Status: NEW → RESOLVED
Closed: 21 years ago17 years ago
Resolution: --- → DUPLICATE
wow, 62993 was opened in December 2000, that's nearly 8 years! heh heh There's me posting back in 2004. I wonder if I should try thunderbird again?
You need to log in before you can comment on or make changes to this bug.