Closed
Bug 593046
Opened 15 years ago
Closed 15 years ago
nsJapaneseToUnicode uses the pref service off of the main thread
Categories
(Core :: Internationalization, defect)
Core
Internationalization
Tracking
()
RESOLVED
FIXED
| Tracking | Status | |
|---|---|---|
| blocking2.0 | --- | final+ |
People
(Reporter: sdwilsh, Assigned: hsivonen)
References
Details
Attachments
(1 file, 1 obsolete file)
|
7.03 KB,
patch
|
smontagu
:
review+
|
Details | Diff | Splinter Review |
REFTEST TEST-START | file:///home/cltbld/talos-slave/tryserver_fedora-debug_test-crashtest/build/reftest/tests/intl/uconv/crashtests/563618.html
++DOMWINDOW == 49 (0x9514d10) [serial = 869] [outer = 0x8bb91a0]
###!!! ASSERTION: Cannot be used on a background thread!: 'Error', file /builds/slave/tryserver-linux-debug/build/modules/libpref/src/nsPrefService.cpp, line 871
nsPrefService::CheckAndLogBackgroundThreadUse [modules/libpref/src/nsPrefService.cpp:873]
nsPrefBranch::GetCharPref [modules/libpref/src/nsPrefBranch.cpp:219]
nsPrefService::GetCharPref [modules/libpref/src/nsPrefService.h:60]
nsJapaneseToUnicode::setMapMode [intl/uconv/ucvja/nsJapaneseToUnicode.cpp:64]
nsEUCJPToUnicodeV2::nsEUCJPToUnicodeV2 [intl/uconv/ucvja/nsJapaneseToUnicode.h:96]
nsEUCJPToUnicodeV2Constructor [intl/uconv/src/nsUConvModule.cpp:437]
mozilla::GenericFactory::CreateInstance [GenericFactory.cpp:49]
nsComponentManagerImpl::CreateInstanceByContractID [xpcom/components/nsComponentManager.cpp:1284]
CallCreateInstance [nsComponentManagerUtils.cpp:170]
nsCreateInstanceByContractID::operator() [nsComponentManagerUtils.cpp:210]
nsCOMPtr<nsIUnicodeDecoder>::assign_from_helper [nsCOMPtr.h:1272]
nsCOMPtr<nsIUnicodeDecoder>::operator= [nsCOMPtr.h:731]
nsCharsetConverterManager::GetUnicodeDecoderRaw [intl/uconv/src/nsCharsetConverterManager.cpp:233]
nsHtml5MetaScanner::tryCharset [parser/html/nsHtml5MetaScannerCppSupplement.h:125]
nsHtml5MetaScanner::tryCharset [parser/html/nsHtml5MetaScanner.cpp:699]
nsHtml5MetaScanner::stateLoop [parser/html/nsHtml5MetaScanner.cpp:327]
nsHtml5MetaScanner::sniff [parser/html/nsHtml5MetaScannerCppSupplement.h:69]
nsHtml5StreamParser::SniffStreamBytes [parser/html/nsHtml5StreamParser.cpp:437]
nsHtml5StreamParser::DoDataAvailable [parser/html/nsHtml5StreamParser.cpp:682]
nsHtml5DataAvailable::Run [parser/html/nsHtml5StreamParser.cpp:721]
nsThread::ProcessNextEvent [xpcom/threads/nsThread.cpp:547]
NS_ProcessNextEvent_P [nsThreadUtils.cpp:250]
nsThread::ThreadFunc [xpcom/threads/nsThread.cpp:262]
_pt_root [nsprpub/pr/src/pthreads/ptthread.c:231]
libpthread.so.0 + 0x5ab5
Also happens in:
REFTEST TEST-START | file:///home/cltbld/talos-slave/tryserver_fedora-debug_test-crashtest/build/reftest/tests/gfx/tests/crashtests/122875-1.html
###!!! ASSERTION: Cannot be used on a background thread!: 'Error', file /builds/slave/tryserver-linux-debug/build/modules/libpref/src/nsPrefService.cpp, line 871
nsPrefService::CheckAndLogBackgroundThreadUse [modules/libpref/src/nsPrefService.cpp:873]
nsPrefBranch::GetCharPref [modules/libpref/src/nsPrefBranch.cpp:219]
nsPrefService::GetCharPref [modules/libpref/src/nsPrefService.h:60]
nsJapaneseToUnicode::setMapMode [intl/uconv/ucvja/nsJapaneseToUnicode.cpp:64]
nsShiftJISToUnicode::nsShiftJISToUnicode [intl/uconv/ucvja/nsJapaneseToUnicode.h:61]
nsShiftJISToUnicodeConstructor [intl/uconv/src/nsUConvModule.cpp:436]
mozilla::GenericFactory::CreateInstance [GenericFactory.cpp:49]
nsComponentManagerImpl::CreateInstanceByContractID [xpcom/components/nsComponentManager.cpp:1284]
CallCreateInstance [nsComponentManagerUtils.cpp:170]
nsCreateInstanceByContractID::operator() [nsComponentManagerUtils.cpp:210]
nsCOMPtr<nsIUnicodeDecoder>::assign_from_helper [nsCOMPtr.h:1272]
nsCOMPtr<nsIUnicodeDecoder>::operator= [nsCOMPtr.h:731]
nsCharsetConverterManager::GetUnicodeDecoderRaw [intl/uconv/src/nsCharsetConverterManager.cpp:233]
nsHtml5MetaScanner::tryCharset [parser/html/nsHtml5MetaScannerCppSupplement.h:125]
nsHtml5MetaScanner::tryCharset [parser/html/nsHtml5MetaScanner.cpp:699]
nsHtml5MetaScanner::stateLoop [parser/html/nsHtml5MetaScanner.cpp:327]
nsHtml5MetaScanner::sniff [parser/html/nsHtml5MetaScannerCppSupplement.h:69]
nsHtml5StreamParser::SniffStreamBytes [parser/html/nsHtml5StreamParser.cpp:451]
nsHtml5StreamParser::DoDataAvailable [parser/html/nsHtml5StreamParser.cpp:682]
nsHtml5DataAvailable::Run [parser/html/nsHtml5StreamParser.cpp:721]
nsThread::ProcessNextEvent [xpcom/threads/nsThread.cpp:547]
NS_ProcessNextEvent_P [nsThreadUtils.cpp:250]
nsThread::ThreadFunc [xpcom/threads/nsThread.cpp:262]
_pt_root [nsprpub/pr/src/pthreads/ptthread.c:231]
libpthread.so.0 + 0x5ab5
| Reporter | ||
Comment 1•15 years ago
|
||
Given the stacks, I suspect this is a regression from the HTML5 parser doing things off of the main thread.
Blocks: 482918
blocking2.0: --- → final+
| Reporter | ||
Comment 2•15 years ago
|
||
Also happens in:
REFTEST TEST-START | file:///Users/cltbld/talos-slave/tryserver_snowleopard-debug_test-reftest/build/reftest/tests/layout/reftests/bugs/109735-1.html
REFTEST TEST-START | file:///Users/cltbld/talos-slave/tryserver_snowleopard-debug_test-reftest/build/reftest/tests/layout/reftests/bugs/109735-1-ref.html
REFTEST TEST-START | file:///Users/cltbld/talos-slave/tryserver_snowleopard-debug_test-reftest/build/reftest/tests/layout/reftests/bugs/116882-1.html
REFTEST TEST-START | file:///Users/cltbld/talos-slave/tryserver_snowleopard-debug_test-reftest/build/reftest/tests/layout/reftests/bugs/116882-1-ref.html
Comment 3•15 years ago
|
||
Can we just remove the pref? From what I can tell, this pref is set to one value on Windows, a different value on OS/2, and not set on other platforms. It seems really strange to me that we need platform-specific decoding which might affect the web, but if we really do, let's just hardcode it an skip having a pref altogether?
Comment 4•15 years ago
|
||
Comment 5•15 years ago
|
||
I really don't think that's a convincing argument, can we remove the pref?
Comment 6•15 years ago
|
||
(In reply to comment #5)
> I really don't think that's a convincing argument, can we remove the pref?
Which part isn't convincing, having the platform difference in the first place or using a pref instead of platform ifdefs?
We need input from Japanese experts here.
Comment 7•15 years ago
|
||
It's 2010. If we still need the platform ifdefs because of bad default fonts, that sucks but whatever. It's the pref that should go.
| Reporter | ||
Comment 8•15 years ago
|
||
(In reply to comment #6)
> Which part isn't convincing, having the platform difference in the first place
> or using a pref instead of platform ifdefs?
IMO, using a pref instead of platform ifdefs.
The first reason of bug 108136 comment 33 which is for Unix users makes sense for me. Any fonts are not bad because each font is created for a platform.
However, I'm not sure whether that is still problem for Unix users too. All of Linux distributions are using UTF-8 for their default encoding now. And even if that is still problem, such troubles should happen on other applications too. I don't think that it should be fixed by prefs only on Gecko.
| Assignee | ||
Comment 10•15 years ago
|
||
Making the pref go away is the most important thing, but it's totally bogus for Shift_JIS in Web content to decode differently in a DOM-exposed way depending on the platform the browser runs on.
| Assignee | ||
Comment 11•15 years ago
|
||
Updated•15 years ago
|
Attachment #471822 -
Attachment is patch: true
Attachment #471822 -
Attachment mime type: application/octet-stream → text/plain
Comment 12•15 years ago
|
||
Comment on attachment 471822 [details] [diff] [review]
Untested fix
> + // HTML5 says to use Windows-31J instead of the real Shift_JIS for decoding
> + // XXX do we really want this for ISO-2022-JP and EUC-JP, too?
Absolutely required. CP51932 and CP50220 are going to be registered for this purpose.
| Assignee | ||
Comment 13•15 years ago
|
||
(In reply to comment #12)
> Comment on attachment 471822 [details] [diff] [review]
> Untested fix
>
> > + // HTML5 says to use Windows-31J instead of the real Shift_JIS for decoding
> > + // XXX do we really want this for ISO-2022-JP and EUC-JP, too?
> Absolutely required. CP51932 and CP50220 are going to be registered for this
> purpose.
OK. I removed the XXX comment.
I didn't modify japanese.map since it is generated code. I'm not sure if part of it is now dead code.
Assignee: smontagu → hsivonen
Attachment #471822 -
Attachment is obsolete: true
Status: NEW → ASSIGNED
Attachment #473481 -
Flags: review?
| Assignee | ||
Updated•15 years ago
|
Attachment #473481 -
Flags: review? → review?(smontagu)
Comment 14•15 years ago
|
||
Comment on attachment 473481 [details] [diff] [review]
Fix using #ifdef instead of a pref
So this is going to change behaviour on platforms other than OS/2 and Windows, correct? I tested (on Mac) that round-tripping still works, and I guess that is the important thing.
Attachment #473481 -
Flags: review?(smontagu) → review+
| Assignee | ||
Comment 15•15 years ago
|
||
(In reply to comment #14)
> So this is going to change behaviour on platforms other than OS/2 and Windows,
> correct?
I'm not sure, but having other platforms differ from Windows in how they decode bytes to UTF-16 would be bogus, so if Mac and Linux weren't doing the right thing already, the change should be good.
Landed: http://hg.mozilla.org/mozilla-central/rev/570dc03cbf24
| Assignee | ||
Updated•15 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•