由于各种你懂的原因,訪问google的服务总是出错,先是hosts不工作。代理也不好使,最后最终能够短暂訪问了。我的版本号还是採用svn维护的,直接svn update也不行。试试git吧,一晚上才下载了120M,这得要猴年马月才干下完那。

找找tarball吧,TNND,尽然google删除了tarball!好在能够通过git的tgz方式变通的拿到tarball。一更新得到提示:ubuntu14.04不支持。算了,再整个30G的空间装个Ubuntu12.04吧,“尝尽了生活的苦。找不到能够相信的人”。

下了个dep_tool又不通了。一执行gclient报错:

gclient runhooks:

/.gclient: line 8: solutions: command not found

./.gclient: line 9: name: command not found

./.gclient: line 10: url: command not found

./.gclient: line 11: custom_deps: command not found

./.gclient: line 16: src/third_party/WebKit/LayoutTests:: No such file or directory

./.gclient: line 17: src/chrome_frame/tools/test/reference_build/chrome:: No such file or directory

./.gclient: line 18: src/chrome/tools/test/reference_build/chrome_mac:: No such file or directory

./.gclient: line 19: src/chrome/tools/test/reference_build/chrome_win:: No such file or directory

./.gclient: line 20: src/chrome/tools/test/reference_build/chrome_linux:: No such file or directory

./.gclient: line 22: syntax error near unexpected token `}'

./.gclient: line 22: `  }'

算了,那就不更新吧,直接在老版本号上build吧:

./build/install-build-deps.sh

提示我64位的kernel编译32位的代码不再获得推荐:

We no longer recommend that you use this script to install

32bit libraries on a 64bit system. Instead, consider using

the install-chroot.sh script to help you set up a 32bit

environment for building and testing 32bit versions of Chrome.



If you nonetheless want to try installing 32bit libraries

directly, you can do so by explicitly passing the --lib32

option to install-build-deps.sh.

Exiting without installing any 32bit libraries.

逗我玩呢。劝我改用install-chroot.sh?

./build/install-chroot.sh

The following targets are available to be installed in a chroot:

   1: breezy

   2: dapper

   3: edgy

  26: stable

  27: testing

  28: trusty

  29: unstable

  30: utopic

  31: vivid

  32: warty

  33: wheezy

  34: woody



You are running a 64bit kernel. This allows you to install either a

32bit or a 64bit chroot environment. Which one do you want (32, 64) 32



I: Retrieving Release

W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg

I: Retrieving Packages

算了,还是取消用这个编译吧:加上--lib32

./build/install-build-deps.sh --lib32

build/gyp_chromium -Dflag1=value1 -Dflag2=value2

然后编译:make chrome -j4

出错了:

net/base/x509_certificate_nss.cc: In function ‘void net::{anonymous}::ParsePrincipal(CERTName*, net::CertPrincipal*)’:

net/base/x509_certificate_nss.cc:75:46: error: invalid conversion from ‘char* (*)(const CERTName*) {aka char* (*)(const CERTNameStr*)}’ to ‘CERTGetNameFunc {aka char* (*)(CERTNameStr*)}’ [-fpermissive]

改之:

  // Get CN, L, S, and C.

#if Michael_Chromium_Patch

      CERTGetNameFunc get_name_funcs[4] = {
(char*(*)(CERTNameStr*))CERT_GetCommonName, (char*(*)(CERTNameStr*))CERT_GetLocalityName,
(char*(*)(CERTNameStr*))CERT_GetStateName, (char*(*)(CERTNameStr*))CERT_GetCountryName };
#else
CERTGetNameFunc get_name_funcs[4] = {
CERT_GetCommonName, CERT_GetLocalityName,
CERT_GetStateName, CERT_GetCountryName }; #endif

make chrome -j

AR(target) out/Debug/obj.target/third_party/WebKit/Source/WebKit/chromium/libwebkit.a

  COPY out/Debug/chrome-wrapper

  ACTION Generating manpage out/Debug/chrome.1

  COPY out/Debug/xdg-mime

  COPY out/Debug/xdg-settings

  COPY out/Debug/product_logo_48.png

  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_main.o

  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_exe_main_gtk.o

  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_main_delegate.o

  LINK(target) out/Debug/chrome

                                                                                ^[      LINK(target) out/Debug/chrome: Finished

谢天谢地,最终过了!

cd out/Debug and run chrome

My god! crash :(

[2560:2560:1091621926:FATAL:field_trial.cc(183)] Check failed: next_group_number_ > kDefaultGroupNumber + 1 (1 vs. 1)

Backtrace:

    base::debug::StackTrace::StackTrace() [0x55555743f072]

    logging::LogMessage::~LogMessage() [0x555557469635]

    base::FieldTrial::SetForced() [0x55555742d1b2]

    VariationsService::CreateTrialFromStudy() [0x55555713a558]

    VariationsService::CreateTrialsFromSeed() [0x555557138e28]

    ChromeBrowserMainParts::SetupMetricsAndFieldTrials() [0x5555570da3bd]

    ChromeBrowserMainParts::PreCreateThreadsImpl() [0x5555570ddf1a]

    ChromeBrowserMainParts::PreCreateThreads() [0x5555570dcfea]

    content::BrowserMainLoop::CreateThreads() [0x555559b7c890]

    (anonymous namespace)::BrowserMainRunnerImpl::Initialize() [0x555559b7e97f]

    BrowserMain() [0x555559b7b34b]

    content::RunNamedProcessTypeMain() [0x5555573aff00]

    content::ContentMainRunnerImpl::Run() [0x5555573b0b74]

    content::ContentMain() [0x5555573af573]

    ChromeMain [0x55555668447d]

    main [0x55555668443c]

    0x7ffff203f76d

    0x555556684349

调试一下吧:

gdb chrome and show call stack:

[32321:32321:43801153618:WARNING:zygote_host_impl_linux.cc(165)] Running without the SUID sandbox! See http://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.

[32347:32347:43817254895:INFO:gl_context_glx.cc(135)] Offscreen context was direct.

Segmentation fault (core dumped)

  1. // This will be called after the command-line has been mutated by about:flags
  2. void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() {
  3. MetricsService* metrics = browser_process_->metrics_service();
  4. if (IsMetricsReportingEnabled())
  5. metrics->ForceClientIdCreation();  // Needed below.
  6. field_trial_list_.reset(
  7. new base::FieldTrialList(metrics->GetEntropySource()));
  8. // Ensure any field trials specified on the command line are initialized.
  9. // Also stop the metrics service so that we don't pollute UMA.
  10. #ifndef NDEBUG
  11. const CommandLine* command_line = CommandLine::ForCurrentProcess();
  12. if (command_line->HasSwitch(switches::kForceFieldTrials)) {
  13. std::string persistent = command_line->GetSwitchValueASCII(
  14. switches::kForceFieldTrials);
  15. bool ret = base::FieldTrialList::CreateTrialsFromString(persistent);
  16. CHECK(ret) << "Invalid --" << switches::kForceFieldTrials <<
  17. " list specified.";
  18. }
  19. #endif  // NDEBUG
  20. VariationsService* variations_service =
  21. browser_process_->variations_service();
  22. variations_service->CreateTrialsFromSeed(browser_process_->local_state());
  23. }
  1. void BrowserProcessImpl::CreateLocalState() {
  2. DCHECK(!created_local_state_ && local_state_.get() == NULL);
  3. created_local_state_ = true;
  4. FilePath local_state_path;
  5. PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path);
  6. local_state_.reset(
  7. PrefService::CreatePrefService(local_state_path, policy_service(), NULL,
  8. false));
  9. // Initialize the prefs of the local state.
  10. browser::RegisterLocalState(local_state_.get());
  11. }
  1. // TODO(brettw): this function does not handle long paths (filename > MAX_PATH)
  2. // characters). This isn't supported very well by Windows right now, so it is
  3. // moot, but we should keep this in mind for the future.
  4. // static
  5. bool PathService::Get(int key, FilePath* result) {
  6. // special case the current directory because it can never be cached
  7. if (key == base::DIR_CURRENT)
  8. return file_util::GetCurrentDirectory(result);
  9. if (GetFromCache(key, result))
  10. return true;
  11. AddToCache(key, path);
  12. *result = path;
  13. return true;
  14. }

坏蛋最终现身了。注意看路径path_:

p *result

$60 = {static kSeparators = 0x55555ad404c0 "/", static kCurrentDirectory = <same as static member of an already seen type>,

  static kParentDirectory = <same as static member of an already seen type>, static kExtensionSeparator = 46 '.', path_ =

    "/home/michael/.config/chromium/Local State"}

(gdb)

删除这个Local State,chrome就跑起来了,原因就是第一次run起来chrome后,我点击了“是否恢复上次的网页”的是button,导致本地状态解析出错。请看此文件末端的一堆seed数据(它就是老鼠):

Local State:

"uninstall_metrics": {

      "installation_date2": "1426134422",

      "launch_count": "2"

   },

   "user_experience_metrics": {

      "low_entropy_source": 2024,

      "session_id": 1,

      "stability": {

         "breakpad_registration_fail": 2,

         "breakpad_registration_ok": 0,

         "crash_count": 1,

         "debugger_not_present": 2,

         "debugger_present": 0,

         "exited_cleanly": false,

         "incomplete_session_end_count": 0,

         "last_timestamp_sec": "0",

         "launch_count": 2,

         "launch_time_sec": "1426138598",

         "page_load_count": 0,

         "renderer_crash_count": 0,

         "renderer_hang_count": 0,

         "session_end_completed": true,

         "stats_buildtime": "1426159202",

         "stats_version": "21.0.1167.0-64-devel"

      }

   },

   "variations_seed": "CigxMTZhNmMwMTN1Z2dlc3RVbmlmaWNhdGlvbl9BNV9TdGFibGUQARj/k8oBIP......

Chrome 编译错误汇总的更多相关文章

  1. openbmc编译错误汇总,持续更新,建议收藏

    本文汇总自己在编译openbmc时遇到的一些问题及解决思路,希望对有兴趣研究openbmc的同学有一些帮助. 项目地址:https://github.com/openbmc/openbmc 编译步骤: ...

  2. php各种编译错误汇总

    PHP编译安装时常见错误解决办法,php编译常见错误 This article is post on https://coderwall.com/p/ggmpfa configure: error: ...

  3. flash/flex 编译错误汇总

    来源:http://blog.chinaunix.net/uid-366408-id-116463.html 代码 消息 说明   1000 对 %s 的引用不明确. 引用可能指向多项.例如,下面使用 ...

  4. iOS 各种编译错误汇总

    1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Val ...

  5. Android:JACK编译错误汇总及解决

    jack server交互命令: jack-admin start-server jack-admin kill-server jack-admin list-server jack-admin un ...

  6. C++ 中的导致编译错误汇总

    多少年来,各路英雄好汉,八方神犇大佬,在CE中饮恨退役. OI的CE,还是那样熟悉的味道. (博主只能想到这么多,欢迎大家来补充) 1.变量名和内置函数冲突?!?! C++内置函数很多很多,许多你不知 ...

  7. Android入门级编译错误汇总

    1  描写叙述:  项目常常须要引用别人的libraryproject,在选项中add进来后,点击应用或者确定.关闭页面. 回到代码中却发现无法链接,又一次打开properties查看,发现导入的pr ...

  8. MDK5 STM32编译问题汇总

    MDK5 STM32编译问题汇总 WIN8.KEIL-MDK-5 编译时,出现弹窗"The ARM C/C++ Compiler 已停止工作",关闭弹窗后,编译输出的窗口中出现如下 ...

  9. Entity Framework学习笔记——错误汇总

    之前的小项目做完了,到了总结经验和更新学习笔记的时间了.开始正题之前先啰嗦一下,对之前的学习目标进行一个调整:“根据代码生成表”与“生成数据库脚本和变更脚本”合并为“Code First模式日常使用篇 ...

随机推荐

  1. Java 内存释放

     问题一什么叫垃圾回收机制 垃圾回收是一种动态存储管理技术它自动地释放不再被程序引用的对象按照特定的垃圾收集算法来实现资源自动回收的功能.当一个对象不再被引用的时候内存回收它占领的空间 ...

  2. 配置quartz数据源的三种方式

    如果是使用了JDBC JobStore或JobStoreCMT获得持久的Job时,就要配置相关的数据源了. 方式一:使用quartz.properties文件,这时只需要在property文件中增加如 ...

  3. 深度学习研究组Deep Learning Research Groups

    Deep Learning Research Groups Some labs and research groups that are actively working on deep learni ...

  4. Python for everyone chapter 1

    Chapter 1 10 试题 1.  When Python is running in the interactive mode and displaying the chevron prompt ...

  5. CoreAudio实现录音播音和扬声器听筒模式的切换

    本例子使用Core Audio实现类似于微信的音频对讲功能,可以录音和播放并且实现了听筒模式和扬声器模式的切换.录音主要使用AVAudioRecorder类来实现录音功能,播放则使用AVAudioPl ...

  6. UVA 11464 Even Parity (独特思路)

    题意:有一个n*n的01矩阵,任务是把尽可能少的0变成1,使得每个元素的上.下.左.右元素之和为偶数. 思路:很容易想到的思路是枚举每个点是0还是1,因为n<=15,复杂度就是2^225显然TL ...

  7. java基础-类变量,类方法

  8. Inception in CNN

    之前也写过GoogLeNet的笔记.但那个时候对Inception有些似懂非懂,这周又一次看了一遍,觉得有了新的体会,特地又一次写一篇博客与它再续前缘. 本文属于论文笔记性质.特此声明. Networ ...

  9. shiro实现基于机构加username的验证以及rememberMe

    一.Shiro的一些经验与rememberMe实现原理 Shiro的登录(Authorization)和验权(Authentication).默认都是依据usernameUserName来做验证和授权 ...

  10. hdu1027 Ignatius and the Princess II (全排列 &amp; STL中的神器)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1027 Ignatiu ...