My favorites | Sign in
Logo
             
New issue | Search
for
| Advanced search | Search tips
Issue 3039: Crash when adding a new word to the dictionary
4 people starred this issue and may be notified of changes. Back to list
Status:  Verified
Owner:  sidchatchromium
Closed:  Oct 2008
Cc:  sidchatchromium
Type-Bug
Pri-1
OS-All
Area-BrowserUI
v-154.2
Mstone-1.0


Sign in to add a comment
 
Reported by fgfemperor, Oct 01, 2008
Product Version      : 0.2.153.1
URLs (if applicable) : any website with a textarea
Other browsers tested: Only applicable to Chrome
Add OK or FAIL after other browsers where you have tested this issue:
     Safari 3: OK
    Firefox 3: OK
         IE 7: OK

What steps will reproduce the problem?
1. Type a word not known by the dictionary, for example: Guaycuru
2. Right-click on it and select "Add to dictionary"
3. You got your crash

What is the expected result?
Word added to the dictionary

What happens instead?
Browser crash, and no word added to the dictionary



Comment 1 by patrick@chromium.org, Oct 01, 2008
This sounds bad, but I can't reproduce.  Can you trigger this crash consistently?  
Are you using Windows XP or Vista?
Cc: sidc...@chromium.org
Labels: -Area-Misc Area-BrowserUI
Comment 2 by fgfemperor, Oct 01, 2008
I'm using Windows XP Pro with SP3 and my Google Chrome is translated into Portuguese
(Brazilian)... And yes, everytime I try to add a word it crashes!
Comment 3 by 6StringsAndSid, Oct 01, 2008
I changed language to Portugese (Brazilian) but still can't repro the crash. However, 
let me look at the code to find points of failure nevertheless.

Patrick, can u repro ?

-Sid
Comment 4 by fgfemperor, Oct 01, 2008
OK, btw I don't know if it changes anything (probably not because all that "tabs are
separeted processes" stuff, but I had open: Gmail, Gdocs and Gcalendar and reproduced
the bug on a textarea on Gmail and on this very textarea I'm writing right now...
Comment 5 by patrick@chromium.org, Oct 01, 2008
I can't reproduce this crash either.  I tried setting both my default and spell-check 
languages to Portuguese (Brazil).  fgfemperor, is this how you have your 
configuration set up?
Labels: -Pri-2 Pri-1
Comment 6 by fgfemperor, Oct 01, 2008
Yes, both of them are configured as Portguese Brazilian!
Comment 7 by patrick@chromium.org, Oct 01, 2008
I was able to reproduce the crash, though not consistently.  For me it takes several 
attempts.  I've triggered it three times so far.  It appears to happen when right-
clicking on the underlined word.

Status: Available
Comment 8 by patrick@chromium.org, Oct 01, 2008
FAULTING_IP: 
chrome_1000000!flag_bsearch+12 [c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\csutil.cxx @ 207]
01491af7 movzx   edx,word ptr [edx+eax*2]

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 01491af7 (chrome_1000000!flag_bsearch+0x00000012)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000000
   Parameter[1]: 648f5932
Attempt to read from address 648f5932

FAULTING_THREAD:  00000ed0

DEFAULT_BUCKET_ID:  INVALID_POINTER_READ

PROCESS_NAME:  chrome.exe

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx" referenced memory at 
"0x%08lx". The memory could not be "%s".

READ_ADDRESS:  648f5932 

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

PRIMARY_PROBLEM_CLASS:  INVALID_POINTER_READ

BUGCHECK_STR:  APPLICATION_FAULT_INVALID_POINTER_READ

LAST_CONTROL_TRANSFER:  from 0149b18b to 01491af7

STACK_TEXT:  
00f2e840 0149b18b 648f574a 00000000 00000000 chrome_1000000!flag_bsearch+0x12 
[c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\csutil.cxx @ 207]
00f2e860 014989aa 01ea7a20 00f2e8d8 00000008 
chrome_1000000!SuggestMgr::checkword+0xab [c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\suggestmgr.cxx @ 1090]
00f2e888 01499f58 01ec8670 00f2e8d8 00000008 chrome_1000000!SuggestMgr::testsug+0x76 
[c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\suggestmgr.cxx @ 86]
00f2eb38 01498c2a 01ec8670 00000007 00000000 
chrome_1000000!SuggestMgr::forgotchar_utf+0xfb [c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\suggestmgr.cxx @ 620]
00f2edd8 01491188 00f2f4b0 00f2f088 00afc1c8 chrome_1000000!SuggestMgr::suggest+0x244 
[c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\suggestmgr.cxx @ 163]
00f2f494 01220c06 00f2f590 00f2f610 00f2faf0 chrome_1000000!Hunspell::suggest+0x5b7 
[c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\hunspell.cxx @ 710]
00f2f5cc 01221e54 00f2f7bc 00000007 00f2f608 
chrome_1000000!SpellChecker::SpellCheckWord+0x2ad [c:\b\slave\chrome-
official\build\src\chrome\browser\spellchecker.cc @ 445]
00f2f810 01221a2a 01e75040 00000000 01ebcc38 
chrome_1000000!ResourceMessageFilter::OnReceiveContextMenuMsg+0x76 
[c:\b\slave\chrome-official\build\src\chrome\browser\resource_message_filter.cc @ 
252]
00f2f88c 0118884b 00f2faf0 00f2faf0 01e75030 
chrome_1000000!ResourceMessageFilter::OnMessageReceived+0x1da [c:\b\slave\chrome-
official\build\src\chrome\browser\resource_message_filter.cc @ 157]
00f2f89c 0118aa71 00f2faf0 00f2faf0 01ebcd0c 
chrome_1000000!IPC::ChannelProxy::Context::TryFilters+0x24 [c:\b\slave\chrome-
official\build\src\chrome\common\ipc_channel_proxy.cc @ 41]
00f2f8ac 0118f4e3 00f2faf0 01ebcc38 01ebdca9 
chrome_1000000!IPC::SyncChannel::SyncContext::OnMessageReceived+0x10 
[c:\b\slave\chrome-official\build\src\chrome\common\ipc_sync_channel.cc @ 325]
00f2fb1c 0118f8a3 01ebcc38 00af9934 00000000 
chrome_1000000!IPC::Channel::ProcessIncomingMessages+0x268 [c:\b\slave\chrome-
official\build\src\chrome\common\ipc_channel.cc @ 295]
00f2fbc4 010173fe 000003dc 00000000 00af9928 
chrome_1000000!IPC::Channel::OnObjectSignaled+0xa5 [c:\b\slave\chrome-
official\build\src\chrome\common\ipc_channel.cc @ 425]
00f2fc6c 010170ca 00000000 00af9968 00af9928 
chrome_1000000!base::MessagePumpWin::SignalWatcher+0xac [c:\b\slave\chrome-
official\build\src\base\message_pump_win.cc @ 500]
00f2fd3c 01016e92 00af9928 00000000 00000000 
chrome_1000000!base::MessagePumpWin::WaitForWork+0x22d [c:\b\slave\chrome-
official\build\src\base\message_pump_win.cc @ 387]
00f2fd70 01016b6c 00f2feb0 00b002c8 00f2feb0 
chrome_1000000!base::MessagePumpWin::DoRunLoop+0xb5 [c:\b\slave\chrome-
official\build\src\base\message_pump_win.cc @ 305]
00f2fd94 010166da 00000000 01008f11 00f2feb0 
chrome_1000000!base::MessagePumpWin::RunWithDispatcher+0x39 [c:\b\slave\chrome-
official\build\src\base\message_pump_win.cc @ 129]
00f2fd9c 01008f11 00f2feb0 00f2feb0 00b002c8 
chrome_1000000!base::MessagePumpWin::Run+0xb [c:\b\slave\chrome-
official\build\src\base\message_pump_win.h @ 136]
00f2fe40 01008e85 1950e3bf 00f2feb0 00b002c8 
chrome_1000000!MessageLoop::RunInternal+0x86 [c:\b\slave\chrome-
official\build\src\base\message_loop.cc @ 182]
00f2fe78 01008e28 00f2feb0 00000001 00f2fe00 
chrome_1000000!MessageLoop::RunHandler+0x4f [c:\b\slave\chrome-
official\build\src\base\message_loop.cc @ 165]
00f2fe98 0147efef 7c9106eb 00000020 00b00308 chrome_1000000!MessageLoop::Run+0x15 
[c:\b\slave\chrome-official\build\src\base\message_loop.cc @ 139]
00f2ff70 0100d0c0 0158ca91 00b002c8 1950e26b 
chrome_1000000!base::Thread::ThreadMain+0x7d [c:\b\slave\chrome-
official\build\src\base\thread.cc @ 159]
00f2ff74 0158ca91 00b002c8 1950e26b 7c9106eb chrome_1000000!`anonymous 
namespace'::ThreadFunc+0x9 [c:\b\slave\chrome-
official\build\src\base\platform_thread_win.cc @ 29]
00f2ffac 0158cb36 00000020 7c80b683 00b00308 chrome_1000000!_callthreadstartex+0x1b 
[f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 348]
00f2ffb4 7c80b683 00b00308 7c9106eb 00000020 chrome_1000000!_threadstartex+0x7f 
[f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
00f2ffec 00000000 0158cab7 00b00308 00000000 kernel32!BaseThreadStart+0x37


FOLLOWUP_IP: 
chrome_1000000!flag_bsearch+12 [c:\b\slave\chrome-
official\build\src\chrome\third_party\hunspell\src\hunspell\csutil.cxx @ 207]
01491af7 movzx   edx,word ptr [edx+eax*2]

FAULTING_SOURCE_CODE:  
   203:    int left = 0;
   204:    int right = length - 1;
   205:    while (left <= right) {
   206:       mid = (left + right) / 2;
>  207:       if (flags[mid] == flag) return 1;
   208:       if (flag < flags[mid]) right = mid - 1;
   209:       else left = mid + 1;
   210:    }
   211:    return 0;
   212: }


SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  chrome_1000000!flag_bsearch+12

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: chrome_1000000

IMAGE_NAME:  chrome.dll

DEBUG_FLR_IMAGE_TIMESTAMP:  48d95a7c

STACK_COMMAND:  ~5s ; kb

FAILURE_BUCKET_ID:  INVALID_POINTER_READ_c0000005_chrome.dll!flag_bsearch

BUCKET_ID:  APPLICATION_FAULT_INVALID_POINTER_READ_chrome_1000000!flag_bsearch+12

Followup: MachineOwner
---------

Comment 9 by finnur@chromium.org, Oct 01, 2008
Looks similar to issue 3040.
Comment 10 by patrick@chromium.org, Oct 02, 2008
(No comment was entered for this change.)
Cc: de...@chromium.org skyli...@chromium.org
Comment 11 by fgfemperor, Oct 03, 2008
Still happens on 0.3.154.0 everytime I try to add the word "Guaycuru" to the 
dictionary.
Comment 12 by sidchatchromium, Oct 03, 2008
Its on the process of being fixed (http://codereview.chromium.org/6430)
Owner: sidc...@chromium.org
Comment 13 by sidchatchromium, Oct 07, 2008
Fixed in http://codereview.chromium.org/6430
Status: Fixed
Comment 14 by venkataramana@chromium.org, Oct 13, 2008
I can't reproduce the crash, But I can see some other issues, I will file them 
separately.
Status: Verified
Labels: v-154.2
Comment 17 by camayal, Oct 15, 2008
Version 0.3.154.3 and still has a problem, this function crash my Chrome!!!!!
OS = Windows XP SP2

Word to add= Euphorbiaceae
Textbox from Gmail website
Comment 18 by fgfemperor, Oct 16, 2008
Same here, 0.3.154.3, XP SP2, word: Guaycuru still crashes...
Comment 19 by patrick@chromium.org, Oct 16, 2008
Reopening, we'll take another look at this.  We suspected this was the same root 
cause as issue 3040, but that may not be the case.
Status: Assigned
Cc: -de...@chromium.org -skyli...@chromium.org
Comment 20 by patrick@chromium.org, Oct 16, 2008
(No comment was entered for this change.)
Labels: Mstone-1.0
Comment 21 by patrick@chromium.org, Oct 16, 2008
I have some requests as we haven't had much luck reproducing this crash.  If you could do the following that would greatly help us.

1. Shut down Google Chrome completely (if it's running).  Make sure no chrome.exe processes are running.  I recommend using Wrench menu > Exit to close everything.
2. Go to Start > Run and type in:
   "%USERPROFILE%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" --noerrdialogs
3. Reproduce the crash with this new window.
4. There will be no application error dialog, the browser will just disappear on a crash.
5. Go to Start > Run and type in %TEMP% and hit enter.
6. Find the most recent .dmp file in this folder.  It will be named like "3ccb9c93-8e2f-4059-8922-71d3afd1952c.dmp".  The file timestamp should be very recent since it was just 
created.  Sorting by Date Modified will make this easy.
7. Attach the .dmp file to a private email addressed to me (optional: zip it up first to reduce size).

Also, if you don't mind sharing your custom spell-check dictionary with us, that may also be helpful in identifying this problem.  This dictionary will consist of all the words you 
have added yourself.  It will be in plain text format.  You can find the dictionary file here:

"%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data\Custom Dictionary.txt"

If you don't mind, please also send that file to me in a private email.

Please refer to this bug in your email(s) for quick reference.
Comment 22 by fgfemperor, Oct 17, 2008
I did everything you said, but no dump file was produced. I looked in my TEMP folder, 
on my Google Chrome folder and also searched my whole computer for *.dmp files 
created today, and none was found... Do i have to put any other command line 
arguments to make it produce the dump? Also, "Guaycuru" is the first and only word I 
tried to add, so I don't even have a Custom Dictionary.txt file...
Comment 23 by fgfemperor, Oct 17, 2008
Ok, so I followed the steps I found here: http://www.google.com/support/chrome/bin/answer.py?answer=107788 and got the dump 
file to be produced. Sent it to your email.
Comment 24 by patrick@chromium.org, Oct 17, 2008
Sid had a fix for this in r3546.  The hypothesis is that the application does not have permission to write to the custom dictionary file.

If you would like to help us verify whether that worked, then please try the following:

Download and install the latest Chromium build from:
http://build.chromium.org/buildbot/continuous/LATEST/mini_installer.exe

Try to reproduce the crash with that build.  You can find it under Start > Programs > Chromium > Chromium.

If you can't reproduce, then it looks like the fix worked.  Unfortunately, though the fix avoids the crash, the "Add to dictionary" feature won't 
work properly.  In this case nothing will be written to the custom dictionary as the application doesn't have permission to do so.

Once you're done with the experiment you can uninstall the new Chromium build if you'd like.  This won't affect your Google Chrome installation.  
You can delete the new user data by deleting the folder "%USERPROFILE%\Local Settings\Application Data\Chromium" (this is separate from the Google 
Chrome user data).
Comment 25 by fgfemperor, Oct 19, 2008
Well, I did what you asked me to... Installed chromium, tried to reproduce the bug... 
and got it again... That nasty crash... Should I try to generate a dump from within 
chromium as well?
Comment 26 by patrick@chromium.org, Oct 20, 2008
Thanks for running that experiment for us!  So even though the patch we checked in 
was good and necessary, it sounds like it did not fix the crash in this instance.

Yes, another crash dump would be useful, just to be sure it's still the same problem.  
Please include the revision number in the email.  Type about:version into the URL 
bar, you should see Developer Build XXXX, XXXX is the revision number.

We'll get to the bottom of this.  Thanks for being patient with us.
Comment 27 by fgfemperor, Oct 20, 2008
I can't get Chromium to generate a crash dump. How should I do it?
Comment 28 by finnur@chromium.org, Oct 20, 2008
fgfemperor: Try following these instructions to generate a crash dump: http://www.google.com/support/chrome/bin/answer.py?answer=107788


Comment 29 by fgfemperor, Oct 20, 2008
OK, got, don't know why it only works sometimes... Sent it to your email again! =)
Comment 30 by finnur@chromium.org, Oct 20, 2008
I'll presume you meant you sent it to Patrick (because I don't see it) :)
Comment 31 by patrick@chromium.org, Oct 20, 2008
Right, I've got it.  But I do still need the revision number in order to make sense 
of the crash dump.
Comment 32 by fgfemperor, Oct 20, 2008
Chromium: 0.3.155.0 (Versão do desenvolvedor 3603)
Which means Developer Version 3603 ;-)
Comment 33 by patrick@chromium.org, Oct 20, 2008
Thanks again.  Now the crash appears to be in a slightly different location.  This time it's in fclose rather than fputs.

Here's the stack:

00d0fbfc 0169be8f 00000000 00000000 00000000 chrome_1160000!`anonymous namespace'::PureCall+0x3 [c:\b\slave\chromium-rel-xp\build\src\chrome\app\chrome_dll_main.cc @ 61]
00d0fc44 0117a19c 00000000 00d0fd00 011ab62a chrome_1160000!fclose+0x35 [f:\sp\vctools\crt_bld\self_x86\crt\src\fclose.c @ 47]
00d0fc50 011ab62a 00000000 00d0feb4 02b3e008 chrome_1160000!file_util::CloseFile+0xc [c:\b\slave\chromium-rel-xp\build\src\base\file_util.cc @ 298]
00d0fc60 011717fd 00000000 00d0feb4 00000001 chrome_1160000!AddWordToCustomDictionaryTask::Run+0x4a [c:\b\slave\chromium-rel-xp\build\src\chrome\browser\spellchecker.cc @ 515]
00d0fd00 011723fa 02b3e008 00b106e0 00b106c0 chrome_1160000!MessageLoop::RunTask+0x7d [c:\b\slave\chromium-rel-xp\build\src\base\message_loop.cc @ 306]
00d0fd50 0117f2fa 00000000 00b106c0 00000000 chrome_1160000!MessageLoop::DoWork+0x1ea [c:\b\slave\chromium-rel-xp\build\src\base\message_loop.cc @ 413]
00d0fd80 0117ddd2 00d0feb4 00d0feb4 00d0feb4 chrome_1160000!base::MessagePumpForUI::DoRunLoop+0x5a [c:\b\slave\chromium-rel-xp\build\src\base\message_pump_win.cc @ 367]
00d0fda0 0116f6fe 00d0feb4 00000000 00d0fe50 chrome_1160000!base::MessagePumpWin::RunWithDispatcher+0x42 [c:\b\slave\chromium-rel-xp\build\src\base\message_pump_win.cc @ 132]
00d0fdb0 01171f77 00d0feb4 00b109e8 00b05c20 chrome_1160000!base::MessagePumpWin::Run+0xe [c:\b\slave\chromium-rel-xp\build\src\base\message_pump_win.h @ 124]
00d0fe50 01172110 b488f62f 00b109fc 00b109e8 chrome_1160000!MessageLoop::RunInternal+0xb7 [c:\b\slave\chromium-rel-xp\build\src\base\message_loop.cc @ 194]
00d0fe84 0117298d 00000001 00000000 00000000 chrome_1160000!MessageLoop::RunHandler+0xa0 [c:\b\slave\chromium-rel-xp\build\src\base\message_loop.cc @ 178]
00d0fea0 016c192a 00000000 00000000 00000000 chrome_1160000!MessageLoop::Run+0x3d [c:\b\slave\chromium-rel-xp\build\src\base\message_loop.cc @ 152]
00d0ff6c 011732ed 00d0ffac 0169a501 00b109e8 chrome_1160000!base::Thread::ThreadMain+0x8a [c:\b\slave\chromium-rel-xp\build\src\base\thread.cc @ 159]
00d0ff74 0169a501 00b109e8 b488f707 00000000 chrome_1160000!`anonymous namespace'::ThreadFunc+0xd [c:\b\slave\chromium-rel-xp\build\src\base\platform_thread_win.cc @ 29]
00d0ffac 0169a5a6 00000000 7c80b683 00b05c20 chrome_1160000!_callthreadstartex+0x1b [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 348]
00d0ffb4 7c80b683 00b05c20 00000000 00000000 chrome_1160000!_threadstartex+0x7f [f:\sp\vctools\crt_bld\self_x86\crt\src\threadex.c @ 326]
00d0ffec 00000000 0169a527 00b05c20 00000000 kernel32!BaseThreadStart+0x37
Comment 34 by patrick@chromium.org, Oct 20, 2008
It looks like the FILE pointer is null in this crash, too.  Do we also need to do a 
null check before calling fclose?
Comment 35 by sidchatchromium, Oct 20, 2008
So it seems ! Will make the changes now.
Comment 36 by patrick@chromium.org, Oct 21, 2008
We checked in another fix for this crasher in r3659.  If you could repeat the above 
experiment with the latest Chromium (about:version should have a revision number >= 
3659), that would be very helpful.  The same problem applies here too: this only 
fixes the crash, the added word won't be saved to the custom dictionary.
Comment 37 by fgfemperor, Oct 22, 2008
Yes, no crash here. The word wasn't saved to the dictionary but Chromium didn't crash 
either! I repeated the experiment 3 times just to be sure!
Chromium	0.3.155.0 (Versão do desenvolvedor 3695)
;-)
Comment 38 by patrick@chromium.org, Oct 22, 2008
Thanks for confirming that the new fix worked!  We really appreciate all of your 
help.

As for your problem, it's a bit strange to not be able to write to your Local AppData 
folder.  You may want to check if there's anything unusual about your setup, such as:

   * If you don't have write permission for that folder.
   * If you're on a guest account.

That's about all I can recommend, I'm definitely not an expert on this.
Status: Fixed
Comment 39 by fgfemperor, Oct 22, 2008
Well, actually I'm testing it both at my work place and my personal notebook. On both 
I have write access to my AppData folder and on both I'm running as a Administrator 
account!
Comment 40 by venkataramana@chromium.org, Oct 23, 2008
In build: 0.3.154.6 (Official Build 3810)
Status: Verified
Comment 41 by fgfemperor, Oct 25, 2008
I still got a crash on 0.3.154.6 !!!

Comment 42 by fgfemperor, Oct 25, 2008
Sent a Crash Dump to Patrick again...
Comment 43 by patrick@chromium.org, Oct 27, 2008
Okay, I see the problem.

On trunk, the code looks like this:

    FILE* f = file_util::OpenFile(file_name_, "a+");
    if (f != NULL)
      fputs(word_.c_str(), f);
    file_util::CloseFile(f);

Reference:
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/spellchecker.cc?revision=3546&view=markup

But in 0.3.154.6, the code looks like this:

    FILE* f = fopen(file_name_char, "a+");
    if (f != NULL)
      fputs(word_.c_str(), f);
    fclose(f);

Reference:
http://src.chromium.org/viewvc/chrome/branches/official/build_154.6/src/chrome/browser/spellchecker.cc?revision=3975&view=markup

The difference being that on trunk we use file_util::CloseFile, which now does a null
check before calling fclose, but on the release branch we call fclose directly, so we
don't get the null check.  We'll have to get this remedied on the release branch.
Comment 44 by fgfemperor, Oct 27, 2008
Oh, I see.... what about this difference:
FILE* f = file_util:OpenFile(file_name_, "a+");
FILE* f = fopen(file_name_char, "a+");

file_name_ against file_name_char? not trying to be annoying here, just something I 
crossed my eyes on...
Comment 45 by patrick@chromium.org, Oct 27, 2008
Good point, that's another difference.  We should use the file_util functions for 
both opening and closing.
Comment 46 by sidchatchromium, Oct 27, 2008
file_util had been in use though out in the trunk. It is now required to integrate 
those CLs into the release branch - Mark is on it.
Sign in to add a comment

Powered by Google Project Hosting