coredump调用栈 thread_worker

时间: 2025-07-28 14:09:56 AIGC 浏览: 24
<think>我们正在分析一个coredump文件,特别是与thread_worker相关的调用栈。根据引用[2]和引用[3],我们可以看到一些关于线程调用栈的示例。我们的目标是分析coredump中thread_worker的调用栈,以定位问题。步骤:1.获取coredump文件:确保在程序崩溃时生成了coredump文件(引用[1]中提到了如何配置coredump文件的生成)。2.使用调试工具(如gdb)加载coredump文件。3.查看所有线程的调用栈,特别是名为thread_worker的线程(或类似名称的线程)。4.分析调用栈,查找异常点。根据引用[3]中的示例,我们看到一个调用栈的片段:#70x00007fd3be587b53inswitch_core_session_thread_pool_worker(thread=0x7fd398096310,obj=)atsrc/switch_core_session.c:1711这表示在switch_core_session_thread_pool_worker函数中发生了问题,位置在src/switch_core_session.c文件的1711行。另外,引用[2]中展示了一个用户栈分析的例子,其中列出了从strcmp到start_thread的函数调用链。因此,我们可以按照以下步骤操作:具体操作:1.使用gdb加载coredump文件:`gdb<可执行文件><coredump文件>`2.使用`infothreads`命令查看所有线程,找到我们关心的线程(比如名为thread_worker的线程)。3.切换到该线程:`thread<线程号>`4.查看该线程的完整调用栈:`bt`(backtrace)5.分析调用栈,关注崩溃点(通常是最顶部的帧)以及相关代码。如果调用栈中出现了我们自己的代码,可以结合源代码进行查看。如果是第三方库,可能需要查看库的源码或文档。另外,引用[4]中提到可以打印对象id来辅助分析,这在C++中可能意味着查看具体的内存对象。在gdb中,我们可以使用`print`命令来查看变量的值。引用[5]虽然讲的是Java的ThreadDump,但原理类似,我们关注锁的状态。在C++中,我们可以检查是否存在死锁或竞争条件。例如,查看线程是否在等待某个锁,而该锁被其他线程持有。因此,在分析调用栈时,注意:-线程当前正在执行的函数和代码行。-调用栈中是否有锁操作(如mutex.lock())?-是否在等待某个条件变量?-是否有资源访问冲突?示例分析步骤(假设使用gdb):(gdb)gdb./my_programcore.1234(gdb)infothreads...找到thread_worker线程,假设是线程3...(gdb)thread3(gdb)bt#00x00007f1234567890in__libc_wait(status=0x7ffd12345678)at../sysdeps/unix/sysv/linux/wait.c:30#10x0000555555555123inthread_worker(arg=0x55555555a0a0)atsrc/worker.c:100...然后,我们可以查看具体代码行:(gdb)listsrc/worker.c:100如果怀疑是内存问题,可以使用gdb的内存检查工具,如`valgrind`(但valgrind是独立工具,不在gdb内)。此外,引用[1]中提到“通过理论与实践的结合,逐步构建起一套完整的C++崩溃问题分析体系”,因此我们应结合代码逻辑和调用栈信息进行推理。总结:分析coredump中thread_worker调用栈的关键步骤是:加载coredump,定位线程,查看调用栈,结合源代码分析问题原因(如空指针、死锁、资源耗尽等)。相关问题:1.如何配置系统以生成coredump文件?2.如何使用gdb分析coredump文件中的具体变量值?3.在多线程程序中,如何避免常见的竞争条件?4.如何从调用栈中识别死锁?</think>### Coredump中thread_worker调用栈分析方法 分析thread_worker相关的调用栈是诊断多线程程序崩溃的关键步骤。以下是系统化的分析方法: #### 一、基础分析流程 1. **加载coredump文件** 使用GDB加载核心转储文件和对应的可执行文件: ```bash gdb <可执行文件路径> <coredump文件路径> ``` 2. **定位目标线程** - 查看所有线程状态:`info threads` - 筛选包含`thread_worker`标识的线程 - 切换到目标线程:`thread <线程ID>` (引用[2]展示了典型的线程栈帧结构) 3. **分析调用栈** - 打印完整调用栈:`bt full` - 重点关注: - 最后执行的函数位置(栈顶) - 线程局部变量值:`info locals` - 关键内存地址:`x/x <地址>` (引用[3]展示了switch_core_session_thread_pool_worker的栈帧示例) #### 二、关键分析方向 1. **资源竞争分析** - 检查锁状态:`p mutex.__data.__lock` - 识别死锁特征: - 多个线程互相持有对方所需锁 - `__lll_lock_wait`阻塞点(引用[5]演示了锁分析) - 验证资源释放顺序 2. **内存问题诊断** - 空指针访问:`info registers`查看寄存器值 - 堆损坏检测: ```gdb heap -v check_heap ``` - 内存越界:`watch -l *(int*)0x<地址>` 3. **线程状态验证** - 检查线程取消点:`info symbol <指令指针>` - 分析取消处理逻辑(引用[2]涉及pthread_cancel路径) - 验证线程池配置参数 #### 三、高级分析技巧 1. **对象生命周期追踪** - 打印关键对象ID(引用[4]的tuple对象分析思路) ```gdb p *(ThreadWorker*)0x<对象地址> ``` - 验证对象析构状态 2. **时序重构** ```gdb thread apply all bt # 获取所有线程快照 ``` - 交叉分析线程交互时序 - 识别竞争条件(Race Condition) 3. **源码关联分析** ```gdb list *$pc # 显示当前执行的源码 info line <函数名> # 定位函数源码位置 ``` #### 四、工具链辅助 | 工具 | 用途 | 命令示例 | |---------------|-------------------------------|----------------------------| | **gdb** | 核心分析工具 | `bt full`,`pthread` | | **valgrind** | 内存泄漏检测 | `valgrind --tool=memcheck` | | **addr2line** | 地址转源码位置 | `addr2line -e <bin> <addr>`| | **pstack** | 快速获取进程栈 | `pstack <coredump>` | > **关键建议**:结合配置合理的coredump生成机制(引用[1]),确保捕获完整线程状态。对于复杂问题,建议多次复现崩溃并对比不同coredump中的线程状态差异。
阅读全文

相关推荐

Fatal Python error: Segmentation fault Thread 0x0000777e2a2ed640 (most recent call first): File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/concurrent/futures/thread.py", line 81 in _worker File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 953 in run File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 1016 in _bootstrap_inner File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 973 in _bootstrap Thread 0x0000777e9affe640 (most recent call first): File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/concurrent/futures/thread.py", line 81 in _worker File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 953 in run File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 1016 in _bootstrap_inner File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 973 in _bootstrap Thread 0x00007780871fe640 (most recent call first): File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/concurrent/futures/thread.py", line 81 in _worker File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 953 in run File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 1016 in _bootstrap_inner File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 973 in _bootstrap Thread 0x00007780889ff640 (most recent call first): File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/concurrent/futures/thread.py", line 81 in _worker File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 953 in run File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 1016 in _bootstrap_inner File "/workspace/isaaclab/_isaac_sim/kit/python/lib/python3.10/threading.py", line 973 in _bootstrap Current thread 0x00007787aa3a9b80 (most recent call first): File "/isaac-sim/exts/isaacsim.core.api/isaacsim/core/api/simulation_context/simulation_context.py", line 864 in play File "/isaac-sim/exts/isaacsim.core.api/isaacsim/core/api/simulation_context/simulation_context.py", line 601 in reset File "/isaac-sim/exts/isaacsim.core.api/isaacsim/core/api/world/world.py", line 389 in reset File "/isaac-sim/lidar_xyj.py", line 93 in <module> Extension modules: omni.mdl.pymdlsdk._pymdlsdk, psutil._psutil_linux, psutil._psutil_posix, numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, scipy._lib._ccallback_c, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.sparse.linalg._isolve._iterative, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg._cythonized_array_utils, scipy.linalg._flinalg, scipy.linalg._solve_toeplitz, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg.cython_lapack, scipy.linalg.cython_blas, scipy.linalg._matfuncs_expm, scipy.linalg._decomp_update, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, scipy.spatial._ckdtree, scipy._lib.messagestream, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.spatial._distance_wrap, scipy.spatial._hausdorff, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.special._ellip_harm_2, scipy.spatial.transform._rotation, torch._C, torch._C._dynamo.autograd_compiler, torch._C._dynamo.eval_frame, torch._C._dynamo.guards, torch._C._dynamo.utils, torch._C._fft, torch._C._linalg, torch._C._nested, torch._C._nn, torch._C._sparse, torch._C._special, PIL._imaging, PIL._imagingft, osqp._osqp, scipy.io.matlab._mio_utils, scipy.io.matlab._streams, scipy.io.matlab._mio5_utils, yaml._yaml (total: 70) /workspace/isaaclab/_isaac_sim/python.sh: line 41: 31527 Segmentation fault (core dumped) $python_exe "$@" $args There was an error running python

-> llm = LLM(**dataclasses.asdict(engine_args)) (Pdb) n INFO 07-28 06:48:21 [config.py:841] This model supports multiple tasks: {'classify', 'generate', 'embed', 'reward'}. Defaulting to 'generate'. INFO 07-28 06:48:21 [config.py:1472] Using max model len 32768 INFO 07-28 06:48:22 [config.py:2285] Chunked prefill is enabled with max_num_batched_tokens=8192. INFO 07-28 06:48:22 [platform.py:174] PIECEWISE compilation enabled on NPU. use_inductor not supported - using only ACL Graph mode INFO 07-28 06:48:22 [utils.py:321] Calculated maximum supported batch sizes for ACL graph: 66 INFO 07-28 06:48:22 [utils.py:336] Adjusted ACL graph batch sizes for Qwen2ForCausalLM model (layers: 28): 67 → 66 sizes huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks... To disable this warning, you can either: - Avoid using tokenizers before the fork if possible - Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false) INFO 07-28 06:48:23 [core.py:526] Waiting for init message from front-end. INFO 07-28 06:48:23 [core.py:69] Initializing a V1 LLM engine (v0.9.2) with config: model='/models/z50051264/summary/Qwen2.5-7B', speculative_config=None, tokenizer='/models/z50051264/summary/Qwen2.5-7B', skip_tokenizer_init=False, tokenizer_mode=auto, revision=None, override_neuron_config={}, tokenizer_revision=None, trust_remote_code=False, dtype=torch.bfloat16, max_seq_len=32768, download_dir=None, load_format=auto, tensor_parallel_size=1, pipeline_parallel_size=1, disable_custom_all_reduce=True, quantization=None, enforce_eager=False, kv_cache_dtype=auto, device_config=npu, decoding_config=DecodingConfig(backend='auto', disable_fallback=False, disable_any_whitespace=False, disable_additional_properties=False, reasoning_backend=''), observability_config=ObservabilityConfig(show_hidden_metrics_for_version=None, otlp_traces_endpoint=None, collect_detailed_traces=None), seed=0, served_model_name=/models/z50051264/summary/Qwen2.5-7B, num_scheduler_steps=1, multi_step_stream_outputs=True, enable_prefix_caching=True, chunked_prefill_enabled=True, use_async_output_proc=True, pooler_config=None, compilation_config={"level":3,"debug_dump_path":"","cache_dir":"","backend":"","custom_ops":["all"],"splitting_ops":["vllm.unified_attention","vllm.unified_attention_with_output","vllm.unified_ascend_attention_with_output"],"use_inductor":false,"compile_sizes":[],"inductor_compile_config":{},"inductor_passes":{},"use_cudagraph":true,"cudagraph_num_of_warmups":1,"cudagraph_capture_sizes":[512,504,496,488,480,472,464,456,448,440,432,424,416,408,400,392,384,376,368,360,352,344,336,328,320,312,304,296,288,280,272,264,256,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,4,2,1],"cudagraph_copy_inputs":false,"full_cuda_graph":false,"max_capture_size":512,"local_cache_dir":null} ERROR 07-28 06:48:29 [core.py:586] EngineCore failed to start. ERROR 07-28 06:48:29 [core.py:586] Traceback (most recent call last): ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 577, in run_engine_core ERROR 07-28 06:48:29 [core.py:586] engine_core = EngineCoreProc(*args, **kwargs) ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 404, in __init__ ERROR 07-28 06:48:29 [core.py:586] super().__init__(vllm_config, executor_class, log_stats, ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 75, in __init__ ERROR 07-28 06:48:29 [core.py:586] self.model_executor = executor_class(vllm_config) ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/executor/executor_base.py", line 53, in __init__ ERROR 07-28 06:48:29 [core.py:586] self._init_executor() ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/executor/uniproc_executor.py", line 47, in _init_executor ERROR 07-28 06:48:29 [core.py:586] self.collective_rpc("init_device") ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/executor/uniproc_executor.py", line 57, in collective_rpc ERROR 07-28 06:48:29 [core.py:586] answer = run_method(self.driver_worker, method, args, kwargs) ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/utils/__init__.py", line 2736, in run_method ERROR 07-28 06:48:29 [core.py:586] return func(*args, **kwargs) ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm/vllm/worker/worker_base.py", line 606, in init_device ERROR 07-28 06:48:29 [core.py:586] self.worker.init_device() # type: ignore ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm-ascend/vllm_ascend/worker/worker_v1.py", line 132, in init_device ERROR 07-28 06:48:29 [core.py:586] NPUPlatform.set_device(device) ERROR 07-28 06:48:29 [core.py:586] File "/vllm-workspace/vllm-ascend/vllm_ascend/platform.py", line 98, in set_device ERROR 07-28 06:48:29 [core.py:586] torch.npu.set_device(device) ERROR 07-28 06:48:29 [core.py:586] File "/usr/local/python3.10.17/lib/python3.10/site-packages/torch_npu/npu/utils.py", line 80, in set_device ERROR 07-28 06:48:29 [core.py:586] torch_npu._C._npu_setDevice(device_id) ERROR 07-28 06:48:29 [core.py:586] RuntimeError: SetPrecisionMode:build/CMakeFiles/torch_npu.dir/compiler_depend.ts:156 NPU function error: at_npu::native::AclSetCompileopt(aclCompileOpt::ACL_PRECISION_MODE, precision_mode), error code is 500001 ERROR 07-28 06:48:29 [core.py:586] [ERROR] 2025-07-28-06:48:29 (PID:3848, Device:0, RankID:-1) ERR00100 PTA call acl api failed ERROR 07-28 06:48:29 [core.py:586] [Error]: The internal ACL of the system is incorrect. ERROR 07-28 06:48:29 [core.py:586] Rectify the fault based on the error information in the ascend log. ERROR 07-28 06:48:29 [core.py:586] E90000: [PID: 3848] 2025-07-28-06:48:29.892.415 Compile operator failed, cause: module '__main__' has no attribute '__spec__' File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/interface.py", line 33, in cann_kb_init ERROR 07-28 06:48:29 [core.py:586] return RouteServer.initialize(**locals()) ERROR 07-28 06:48:29 [core.py:586] File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/route.py", line 54, in wrapper ERROR 07-28 06:48:29 [core.py:586] return func(cls, *args, **kwargs) ERROR 07-28 06:48:29 [core.py:586] File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/route.py", line 169, in initialize ERROR 07-28 06:48:29 [core.py:586] main_mod, main_path = config_main_info() ERROR 07-28 06:48:29 [core.py:586] File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/utils/common.py", line 37, in config_main_info ERROR 07-28 06:48:29 [core.py:586] main_module_name = getattr(main_module.__spec__, "name", None) ERROR 07-28 06:48:29 [core.py:586] ERROR 07-28 06:48:29 [core.py:586] TraceBack (most recent call last): ERROR 07-28 06:48:29 [core.py:586] AOE Failed to call InitCannKB[FUNC:Initialize][FILE:python_adapter_manager.cc][LINE:47] ERROR 07-28 06:48:29 [core.py:586] Failed to initialize TeConfigInfo. ERROR 07-28 06:48:29 [core.py:586] [GraphOpt][InitializeInner][InitTbeFunc] Failed to init tbe.[FUNC:InitializeTeFusion][FILE:tbe_op_store_adapter.cc][LINE:1889] ERROR 07-28 06:48:29 [core.py:586] [GraphOpt][InitializeInner][InitTeFusion]: Failed to initialize TeFusion.[FUNC:InitializeInner][FILE:tbe_op_store_adapter.cc][LINE:1856] ERROR 07-28 06:48:29 [core.py:586] [SubGraphOpt][PreCompileOp][InitAdapter] InitializeAdapter adapter [tbe_op_adapter] failed! Ret [4294967295][FUNC:InitializeAdapter][FILE:op_store_adapter_manager.cc][LINE:79] ERROR 07-28 06:48:29 [core.py:586] [SubGraphOpt][PreCompileOp][Init] Initialize op store adapter failed, OpsStoreName[tbe-custom].[FUNC:Initialize][FILE:op_store_adapter_manager.cc][LINE:120] ERROR 07-28 06:48:29 [core.py:586] [FusionMngr][Init] Op store adapter manager init failed.[FUNC:Initialize][FILE:fusion_manager.cc][LINE:115] ERROR 07-28 06:48:29 [core.py:586] PluginManager InvokeAll failed.[FUNC:Initialize][FILE:ops_kernel_manager.cc][LINE:83] ERROR 07-28 06:48:29 [core.py:586] OpsManager initialize failed.[FUNC:InnerInitialize][FILE:gelib.cc][LINE:259] ERROR 07-28 06:48:29 [core.py:586] GELib::InnerInitialize failed.[FUNC:Initialize][FILE:gelib.cc][LINE:184] ERROR 07-28 06:48:29 [core.py:586] GEInitialize failed.[FUNC:GEInitialize][FILE:ge_api.cc][LINE:371] ERROR 07-28 06:48:29 [core.py:586] [Initialize][Ge]GEInitialize failed. ge result = 4294967295[FUNC:ReportCallError][FILE:log_inner.cpp][LINE:161] ERROR 07-28 06:48:29 [core.py:586] [Init][Compiler]Init compiler failed[FUNC:ReportInnerError][FILE:log_inner.cpp][LINE:145] ERROR 07-28 06:48:29 [core.py:586] [Set][Options]OpCompileProcessor init failed![FUNC:ReportInnerError][FILE:log_inner.cpp][LINE:145] ERROR 07-28 06:48:29 [core.py:586] Exception in thread Thread-4: Process EngineCore_0: Traceback (most recent call last): File "/usr/local/python3.10.17/lib/python3.10/threading.py", line 1016, in _bootstrap_inner self.run() File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/utils/multiprocess_util.py", line 91, in run Traceback (most recent call last): File "/usr/local/python3.10.17/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap self.run() File "/usr/local/python3.10.17/lib/python3.10/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 590, in run_engine_core raise e File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 577, in run_engine_core engine_core = EngineCoreProc(*args, **kwargs) File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 404, in __init__ super().__init__(vllm_config, executor_class, log_stats, key, func, args, kwargs = self.task_q.get(timeout=TIMEOUT) File "/vllm-workspace/vllm/vllm/v1/engine/core.py", line 75, in __init__ self.model_executor = executor_class(vllm_config) File "<string>", line 2, in get File "/vllm-workspace/vllm/vllm/executor/executor_base.py", line 53, in __init__ self._init_executor() File "/vllm-workspace/vllm/vllm/executor/uniproc_executor.py", line 47, in _init_executor self.collective_rpc("init_device") File "/vllm-workspace/vllm/vllm/executor/uniproc_executor.py", line 57, in collective_rpc answer = run_method(self.driver_worker, method, args, kwargs) File "/vllm-workspace/vllm/vllm/utils/__init__.py", line 2736, in run_method return func(*args, **kwargs) File "/vllm-workspace/vllm/vllm/worker/worker_base.py", line 606, in init_device self.worker.init_device() # type: ignore File "/vllm-workspace/vllm-ascend/vllm_ascend/worker/worker_v1.py", line 132, in init_device NPUPlatform.set_device(device) File "/vllm-workspace/vllm-ascend/vllm_ascend/platform.py", line 98, in set_device torch.npu.set_device(device) File "/usr/local/python3.10.17/lib/python3.10/site-packages/torch_npu/npu/utils.py", line 80, in set_device torch_npu._C._npu_setDevice(device_id) RuntimeError: SetPrecisionMode:build/CMakeFiles/torch_npu.dir/compiler_depend.ts:156 NPU function error: at_npu::native::AclSetCompileopt(aclCompileOpt::ACL_PRECISION_MODE, precision_mode), error code is 500001 [ERROR] 2025-07-28-06:48:29 (PID:3848, Device:0, RankID:-1) ERR00100 PTA call acl api failed [Error]: The internal ACL of the system is incorrect. Rectify the fault based on the error information in the ascend log. E90000: [PID: 3848] 2025-07-28-06:48:29.892.415 Compile operator failed, cause: module '__main__' has no attribute '__spec__' File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/interface.py", line 33, in cann_kb_init return RouteServer.initialize(**locals()) File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/route.py", line 54, in wrapper return func(cls, *args, **kwargs) File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/route.py", line 169, in initialize main_mod, main_path = config_main_info() File "/usr/local/Ascend/ascend-toolkit/latest/python/site-packages/tbe/common/repository_manager/utils/common.py", line 37, in config_main_info main_module_name = getattr(main_module.__spec__, "name", None) TraceBack (most recent call last): AOE Failed to call InitCannKB[FUNC:Initialize][FILE:python_adapter_manager.cc][LINE:47] Failed to initialize TeConfigInfo. [GraphOpt][InitializeInner][InitTbeFunc] Failed to init tbe.[FUNC:InitializeTeFusion][FILE:tbe_op_store_adapter.cc][LINE:1889] [GraphOpt][InitializeInner][InitTeFusion]: Failed to initialize TeFusion.[FUNC:InitializeInner][FILE:tbe_op_store_adapter.cc][LINE:1856] [SubGraphOpt][PreCompileOp][InitAdapter] InitializeAdapter adapter [tbe_op_adapter] failed! Ret [4294967295][FUNC:InitializeAdapter][FILE:op_store_adapter_manager.cc][LINE:79] [SubGraphOpt][PreCompileOp][Init] Initialize op store adapter failed, OpsStoreName[tbe-custom].[FUNC:Initialize][FILE:op_store_adapter_manager.cc][LINE:120] [FusionMngr][Init] Op store adapter manager init failed.[FUNC:Initialize][FILE:fusion_manager.cc][LINE:115] PluginManager InvokeAll failed.[FUNC:Initialize][FILE:ops_kernel_manager.cc][LINE:83] OpsManager initialize failed.[FUNC:InnerInitialize][FILE:gelib.cc][LINE:259] GELib::InnerInitialize failed.[FUNC:Initialize][FILE:gelib.cc][LINE:184] GEInitialize failed.[FUNC:GEInitialize][FILE:ge_api.cc][LINE:371] [Initialize][Ge]GEInitialize failed. ge result = 4294967295[FUNC:ReportCallError][FILE:log_inner.cpp][LINE:161] [Init][Compiler]Init compiler failed[FUNC:ReportInnerError][FILE:log_inner.cpp][LINE:145] [Set][Options]OpCompileProcessor init failed![FUNC:ReportInnerError][FILE:log_inner.cpp][LINE:145] RuntimeError: Engine core initialization failed. See root cause above. Failed core proc(s): {'EngineCore_0': 1} > /models/z50051264/vllm-0.10.0/benchmarks/benchmark_throughput.py(62)run_vllm() -> llm = LLM(**dataclasses.asdict(engine_args)) 初始化引擎失败是怎么回事儿???

分析安卓ANR日志: ----- pid 27068 at 2025-09-01 08:35:45 ----- Cmd line: com.miui.dmregservice Build fingerprint: 'Redmi/gauguinpro/gauguinpro:11/RKQ1.200826.002/V12.5.7.0.RJSCNXM:user/release-keys' ABI: 'arm64' Build type: optimized Zygote loaded classes=15964 post zygote classes=178 Dumping registered class loaders #0 dalvik.system.PathClassLoader: [], parent #1 #1 java.lang.BootClassLoader: [], no parent #2 dalvik.system.PathClassLoader: [/system/framework/tcmclient.jar], parent #0 #3 dalvik.system.PathClassLoader: [], parent #0 #4 dalvik.system.PathClassLoader: [/system/priv-app/DMRegService/DMRegService.apk], parent #1 Done dumping class loaders Classes initialized: 188 in 19.099ms Intern table: 32487 strong; 594 weak JNI: CheckJNI is off; globals=731 (plus 53 weak) Libraries: /system/lib64/libaes-jni.so libandroid.so libaudioeffect_jni.so libcompiler_rt.so libicu_jni.so libjavacore.so libjavacrypto.so libjnigraphics.so libmedia_jni.so libmiuinative.so libopenjdk.so libqti_performance.so librs_jni.so libsfplugin_ccodec.so libsoundpool.so libstats_jni.so libwebviewchromium_loader.so (17) Heap: 0% free, 256MB/256MB; 6743537 objects Dumping cumulative Gc timings Start Dumping histograms for 4377 iterations for concurrent copying MarkingPhase: Sum: 407.621s 99% C.I. 0.377ms-777.999ms Avg: 93.170ms Max: 1311.706ms ProcessMarkStack: Sum: 281.231s 99% C.I. 0.214ms-823.277ms Avg: 64.252ms Max: 2343.286ms ScanCardsForSpace: Sum: 104.203s 99% C.I. 0.084ms-282.336ms Avg: 23.807ms Max: 416.563ms ClearFromSpace: Sum: 26.585s 99% C.I. 0.092ms-33.046ms Avg: 6.073ms Max: 137.219ms ScanImmuneSpaces: Sum: 26.274s 99% C.I. 1.740ms-10.739ms Avg: 3.002ms Max: 38.684ms SweepLargeObjects: Sum: 19.520s 99% C.I. 0.051ms-22.222ms Avg: 4.459ms Max: 52.095ms VisitConcurrentRoots: Sum: 12.732s 99% C.I. 1.017ms-4.789ms Avg: 1.454ms Max: 18.064ms CaptureThreadRootsForMarking: Sum: 10.865s 99% C.I. 0.078ms-24.833ms Avg: 2.483ms Max: 76.475ms EmptyRBMarkBitStack: Sum: 2.792s 99% C.I. 8.791us-16676.800us Avg: 638.100us Max: 131742us InitializePhase: Sum: 1.776s 99% C.I. 81us-1267.625us Avg: 405.784us Max: 2028us SweepSystemWeaks: Sum: 711.284ms 99% C.I. 88us-779.326us Avg: 162.504us Max: 24490us GrayAllDirtyImmuneObjects: Sum: 689.803ms 99% C.I. 90us-558.812us Avg: 157.597us Max: 2826us FlipOtherThreads: Sum: 592.254ms 99% C.I. 51us-563.218us Avg: 135.310us Max: 3265us VisitNonThreadRoots: Sum: 522.591ms 99% C.I. 38us-236us Avg: 59.711us Max: 666us FlipThreadRoots: Sum: 344.754ms 99% C.I. 1.122us-1770.500us Avg: 78.764us Max: 15055us CopyingPhase: Sum: 229.989ms 99% C.I. 4us-2911.500us Avg: 52.544us Max: 20150us ForwardSoftReferences: Sum: 193.330ms 99% C.I. 9us-194.921us Avg: 44.189us Max: 3234us RecordFree: Sum: 154.577ms 99% C.I. 22us-129.250us Avg: 35.315us Max: 4434us MarkZygoteLargeObjects: Sum: 88.839ms 99% C.I. 9us-108.812us Avg: 20.296us Max: 567us ProcessReferences: Sum: 80.408ms 99% C.I. 0.257us-93.589us Avg: 9.185us Max: 1130us ThreadListFlip: Sum: 74.857ms 99% C.I. 5us-97.755us Avg: 17.102us Max: 4208us EnqueueFinalizerReferences: Sum: 71.799ms 99% C.I. 6us-98.390us Avg: 16.403us Max: 239us (Paused)GrayAllNewlyDirtyImmuneObjects: Sum: 66.861ms 99% C.I. 9us-93.130us Avg: 15.275us Max: 3162us ResumeRunnableThreads: Sum: 66.580ms 99% C.I. 1us-127.446us Avg: 15.211us Max: 282us SwapBitmaps: Sum: 65.158ms 99% C.I. 8us-49.932us Avg: 14.886us Max: 206us ReclaimPhase: Sum: 63.089ms 99% C.I. 3us-99.910us Avg: 14.413us Max: 8802us (Paused)SetFromSpace: Sum: 38.540ms 99% C.I. 0.251us-50.442us Avg: 8.805us Max: 370us MarkStackAsLive: Sum: 30.099ms 99% C.I. 2us-49.818us Avg: 6.876us Max: 187us SweepAllocSpace: Sum: 19.862ms 99% C.I. 2us-49.818us Avg: 4.537us Max: 132us (Paused)FlipCallback: Sum: 14.589ms 99% C.I. 1us-49.772us Avg: 3.333us Max: 886us Sweep: Sum: 12.399ms 99% C.I. 1us-49.772us Avg: 2.832us Max: 1245us UnBindBitmaps: Sum: 9.048ms 99% C.I. 1us-45us Avg: 2.067us Max: 45us (Paused)ClearCards: Sum: 7.114ms 99% C.I. 250ns-49758ns Avg: 73ns Max: 2063000ns ResumeOtherThreads: Sum: 4.254ms 99% C.I. 250ns-49852ns Avg: 971ns Max: 217000ns Done Dumping histograms concurrent copying paused: Sum: 213.024ms 99% C.I. 21us-498.296us Avg: 48.668us Max: 4260us concurrent copying freed-bytes: Avg: 72MB Max: 216MB Min: 0B Freed-bytes histogram: 0:731,20480:1518,40960:1123,61440:71,81920:4,143360:1,163840:17,184320:38,204800:874 concurrent copying total time: 897.756s mean time: 205.107ms concurrent copying freed: 4076473440 objects with total size 308GB concurrent copying throughput: 4.54074e+06/s / 351MB/s per cpu-time: 382786808/s / 365MB/s Average major GC reclaim bytes ratio 0.151738 over 4377 GC cycles Average major GC copied live bytes ratio 0.538818 over 4381 major GCs Cumulative bytes moved 56104487208 Cumulative objects moved 1682145047 Peak regions allocated 882 (220MB) / 1024 (256MB) Start Dumping histograms for 4376 iterations for young concurrent copying ProcessMarkStack: Sum: 261.385s 99% C.I. 0.113ms-601.907ms Avg: 59.731ms Max: 847.936ms ScanCardsForSpace: Sum: 124.347s 99% C.I. 0.115ms-443.903ms Avg: 28.415ms Max: 636.348ms ThreadListFlip: Sum: 22.720s 99% C.I. 0.010ms-77.779ms Avg: 5.192ms Max: 85.781ms ScanImmuneSpaces: Sum: 17.205s 99% C.I. 2.067ms-15.023ms Avg: 3.931ms Max: 35.051ms ClearFromSpace: Sum: 11.730s 99% C.I. 0.010ms-17.432ms Avg: 2.680ms Max: 70.950ms VisitConcurrentRoots: Sum: 7.581s 99% C.I. 1.018ms-6.003ms Avg: 1.732ms Max: 14.137ms SweepArray: Sum: 1.623s 99% C.I. 3us-6965.333us Avg: 370.912us Max: 12241us InitializePhase: Sum: 1.593s 99% C.I. 152us-1192.166us Avg: 364.035us Max: 11618us EmptyRBMarkBitStack: Sum: 1.533s 99% C.I. 4.206us-13624us Avg: 350.345us Max: 50705us GrayAllDirtyImmuneObjects: Sum: 906.267ms 99% C.I. 112us-660.599us Avg: 207.099us Max: 3455us FlipOtherThreads: Sum: 817.301ms 99% C.I. 80us-736.959us Avg: 186.768us Max: 10146us SweepSystemWeaks: Sum: 761.883ms 99% C.I. 100.090us-679.428us Avg: 174.104us Max: 2980us CopyingPhase: Sum: 737.008ms 99% C.I. 5us-5792us Avg: 168.420us Max: 78766us FlipThreadRoots: Sum: 481.351ms 99% C.I. 1.161us-3208us Avg: 109.997us Max: 10801us VisitNonThreadRoots: Sum: 322.082ms 99% C.I. 40us-311.777us Avg: 73.601us Max: 2963us RecordFree: Sum: 159.366ms 99% C.I. 0.271us-129.471us Avg: 18.209us Max: 1091us ResumeRunnableThreads: Sum: 103.752ms 99% C.I. 1us-187.172us Avg: 23.709us Max: 5880us ProcessReferences: Sum: 88.833ms 99% C.I. 0.259us-95.092us Avg: 10.150us Max: 935us (Paused)GrayAllNewlyDirtyImmuneObjects: Sum: 87.416ms 99% C.I. 9us-105.888us Avg: 19.976us Max: 1337us EnqueueFinalizerReferences: Sum: 71.267ms 99% C.I. 6us-98.344us Avg: 16.285us Max: 826us MarkZygoteLargeObjects: Sum: 41.806ms 99% C.I. 3us-61.636us Avg: 9.553us Max: 1184us (Paused)SetFromSpace: Sum: 41.763ms 99% C.I. 0.254us-124.486us Avg: 9.543us Max: 1634us ReclaimPhase: Sum: 41.210ms 99% C.I. 3us-95.523us Avg: 9.417us Max: 1722us ForwardSoftReferences: Sum: 39.831ms 99% C.I. 3us-49.955us Avg: 9.102us Max: 3182us SwapBitmaps: Sum: 33.890ms 99% C.I. 4us-49.863us Avg: 7.744us Max: 171us ResetStack: Sum: 31.634ms 99% C.I. 2us-49.932us Avg: 7.228us Max: 931us UnBindBitmaps: Sum: 21.586ms 99% C.I. 2us-49.806us Avg: 4.932us Max: 306us (Paused)FlipCallback: Sum: 15.990ms 99% C.I. 1us-49.852us Avg: 3.654us Max: 164us (Paused)ClearCards: Sum: 11.024ms 99% C.I. 250ns-49769ns Avg: 114ns Max: 1858000ns ResumeOtherThreads: Sum: 5.534ms 99% C.I. 0.250us-49.784us Avg: 1.264us Max: 112us FreeList: Sum: 1.634ms 99% C.I. 0.250us-25us Avg: 1.638us Max: 25us Done Dumping histograms young concurrent copying paused: Sum: 22.887s 99% C.I. 0.025ms-77.186ms Avg: 5.230ms Max: 85.832ms young concurrent copying freed-bytes: Avg: 8982KB Max: 90MB Min: 0B Freed-bytes histogram: 0:2931,10240:749,20480:558,30720:38,40960:60,51200:37,61440:2,92160:1 young concurrent copying total time: 454.543s mean time: 103.871ms young concurrent copying freed: 863768394 objects with total size 37GB young concurrent copying throughput: 1.9003e+06/s / 84MB/s per cpu-time: 96565942/s / 92MB/s Average minor GC reclaim bytes ratio 0.0578315 over 4376 GC cycles Average minor GC copied live bytes ratio 0.351063 over 4376 minor GCs Cumulative bytes moved 49489427536 Cumulative objects moved 1508266327 Peak regions allocated 882 (220MB) / 1024 (256MB) Total time spent in GC: 1352.299s Mean GC size throughput: 261MB/s per cpu-time: 276MB/s Mean GC object throughput: 3.65322e+06 objects/s Total number of allocations 4946979908 Total bytes allocated 345GB Total bytes freed 345GB Free memory 55KB Free memory until GC 55KB Free memory until OOME 55KB Total memory 256MB Max memory 256MB Zygote space size 3556KB Total mutator paused time: 23.100s Total time waiting for GC to complete: 394.162s Total GC count: 8759 Total GC time: 1358.123s Total blocking GC count: 3623 Total blocking GC time: 533.131s Histogram of GC count per 10000 ms: 0:3137,1:9,2:3,3:7,4:14,5:8,6:11,7:9,8:157,9:13,10:376,11:28,12:19,13:27,14:32,15:20,16:19,17:17,18:12,19:5,20:41 Histogram of blocking GC count per 10000 ms: 0:3164,1:6,2:9,3:117,4:469,5:57,6:14,7:40,8:81,9:5,10:1,14:1 Native bytes total: 14255852 registered: 54108 Total native bytes at last GC: 14256364 /system/framework/oat/arm64/android.hidl.base-V1.0-java.odex: quicken /system/framework/oat/arm64/android.hidl.manager-V1.0-java.odex: quicken /system/framework/oat/arm64/android.test.base.odex: quicken /system/framework/oat/arm64/org.apache.http.legacy.odex: speed-profile /data/dalvik-cache/arm64/system@priv-app@[email protected]@classes.dex: speed Current JIT code cache size (used / resident): 19KB / 32KB Current JIT data cache size (used / resident): 22KB / 32KB Zygote JIT code cache size (at point of fork): 59KB / 64KB Zygote JIT data cache size (at point of fork): 53KB / 60KB Current JIT mini-debug-info size: 51KB Current JIT capacity: 64KB Current number of JIT JNI stub entries: 0 Current number of JIT code cache entries: 73 Total number of JIT compilations: 27 Total number of JIT compilations for on stack replacement: 0 Total number of JIT code cache collections: 0 Memory used for stack maps: Avg: 152B Max: 1208B Min: 24B Memory used for compiled code: Avg: 745B Max: 4652B Min: 112B Memory used for profiling info: Avg: 207B Max: 2096B Min: 32B Start Dumping histograms for 73 iterations for JIT timings Compiling: Sum: 195.105ms 99% C.I. 0.372ms-16.458ms Avg: 2.672ms Max: 20.238ms TrimMaps: Sum: 5.313ms 99% C.I. 17us-395.250us Avg: 72.780us Max: 405us Done Dumping histograms Memory used for compilation: Avg: 147KB Max: 837KB Min: 16KB suspend all histogram: Sum: 22.745s 99% C.I. 0.011ms-43.325ms Avg: 2.593ms Max: 85.769ms DALVIK THREADS (33): "Signal Catcher" daemon prio=10 tid=6 Runnable | group="system" sCount=0 dsCount=0 flags=0 obj=0x12c401f8 self=0xb400006f78638000 | sysTid=27078 nice=-20 cgrp=default sched=0/0 handle=0x6f7996bcc0 | state=R schedstat=( 26959839 1784165 23 ) utm=1 stm=0 core=0 HZ=100 | stack=0x6f79874000-0x6f79876000 stackSize=995KB | held mutexes= "mutator lock"(shared held) native: #00 pc 00000000004a0c68 /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140) native: #01 pc 00000000005ae000 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+376) native: #02 pc 00000000005cb13c /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+924) native: #03 pc 00000000005c507c /apex/com.android.art/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+528) native: #04 pc 00000000005c4208 /apex/com.android.art/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)+1920) native: #05 pc 00000000005c36a8 /apex/com.android.art/lib64/libart.so (art::ThreadList::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+776) native: #06 pc 000000000056f5f8 /apex/com.android.art/lib64/libart.so (art::Runtime::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+196) native: #07 pc 0000000000584c38 /apex/com.android.art/lib64/libart.so (art::SignalCatcher::HandleSigQuit()+1396) native: #08 pc 0000000000583c04 /apex/com.android.art/lib64/libart.so (art::SignalCatcher::Run(void*)+348) native: #09 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #10 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x72caf308 self=0xb40000700ea2dc00 | sysTid=27068 nice=0 cgrp=default sched=0/0 handle=0x701017f4f8 | state=S schedstat=( 4316685794 1721568040 9042 ) utm=222 stm=209 core=1 HZ=100 | stack=0x7ff4c7b000-0x7ff4c7d000 stackSize=8192KB | held mutexes= native: #00 pc 00000000000d7a58 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8) native: #01 pc 0000000000019acc /system/lib64/libutils.so (android::Looper::pollInner(int)+184) native: #02 pc 00000000000199ac /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) native: #03 pc 0000000000118288 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:335) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:8059) at java.lang.reflect.Method.invoke(Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967) "Runtime worker thread 0" prio=10 tid=2 Native (still starting up) | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb400006f78600000 | sysTid=27074 nice=-20 cgrp=default sched=0/0 handle=0x700ec6ad00 | state=S schedstat=( 220052 7604 4 ) utm=0 stm=0 core=6 HZ=100 | stack=0x700ec5c000-0x700ec5e000 stackSize=63KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 00000000005cce64 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120) native: #03 pc 00000000005cc0c8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80) native: #04 pc 00000000005cbbd8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192) native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "Runtime worker thread 2" prio=10 tid=3 Native (still starting up) | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb40000700ea2f800 | sysTid=27076 nice=-20 cgrp=default sched=0/0 handle=0x700cdf6d00 | state=S schedstat=( 87239 32865 3 ) utm=0 stm=0 core=6 HZ=100 | stack=0x700cde8000-0x700cdea000 stackSize=63KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 00000000005cce64 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120) native: #03 pc 00000000005cc0c8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80) native: #04 pc 00000000005cbbd8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192) native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "Runtime worker thread 1" prio=10 tid=4 Native (still starting up) | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb400006f78611800 | sysTid=27075 nice=-20 cgrp=default sched=0/0 handle=0x700ce46d00 | state=S schedstat=( 76147 137395 4 ) utm=0 stm=0 core=6 HZ=100 | stack=0x700ce38000-0x700ce3a000 stackSize=63KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 00000000005cce64 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120) native: #03 pc 00000000005cc0c8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80) native: #04 pc 00000000005cbbd8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192) native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "Runtime worker thread 3" prio=10 tid=5 Native (still starting up) | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xb400006f6bbd2c00 | sysTid=27077 nice=-20 cgrp=default sched=0/0 handle=0x6f88965d00 | state=S schedstat=( 49948 69739 2 ) utm=0 stm=0 core=6 HZ=100 | stack=0x6f88957000-0x6f88959000 stackSize=63KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 00000000005cce64 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120) native: #03 pc 00000000005cc0c8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+80) native: #04 pc 00000000005cbbd8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192) native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "Jit thread pool worker thread 0" daemon prio=5 tid=7 Native | group="system" sCount=1 dsCount=0 flags=1 obj=0x12c40270 self=0xb400006f6bbf5c00 | sysTid=27079 nice=0 cgrp=default sched=0/0 handle=0x6f79871d00 | state=S schedstat=( 62065363 11169270 36 ) utm=5 stm=0 core=2 HZ=100 | stack=0x6f79773000-0x6f79775000 stackSize=1023KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 00000000005cce64 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120) native: #03 pc 00000000005cc108 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+144) native: #04 pc 00000000005cbbd8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192) native: #05 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #06 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "HeapTaskDaemon" daemon prio=5 tid=8 WaitingForGcToComplete | group="system" sCount=1 dsCount=0 flags=1 obj=0x12c402e8 self=0xb400006f6bbe4400 | sysTid=27080 nice=4 cgrp=default sched=0/0 handle=0x6f7976ccc0 | state=S schedstat=( 1129937649897 21627716205 99260 ) utm=103605 stm=9388 core=0 HZ=100 | stack=0x6f79669000-0x6f7966b000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002a9074 /apex/com.android.art/lib64/libart.so (art::gc::Heap::ConcurrentGC(art::Thread*, art::gc::GcCause, bool)+68) native: #05 pc 00000000002aeb60 /apex/com.android.art/lib64/libart.so (art::gc::Heap::ConcurrentGCTask::Run(art::Thread*)+36) native: #06 pc 00000000002e78a8 /apex/com.android.art/lib64/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+64) at dalvik.system.VMRuntime.runHeapTasks(Native method) at java.lang.Daemons$HeapTaskDaemon.runInternal(Daemons.java:532) at java.lang.Daemons$Daemon.run(Daemons.java:140) at java.lang.Thread.run(Thread.java:923) "ReferenceQueueDaemon" daemon prio=5 tid=9 Waiting | group="system" sCount=1 dsCount=0 flags=1 obj=0x12c40360 self=0xb400006f6bbe6000 | sysTid=27081 nice=4 cgrp=default sched=0/0 handle=0x6f79662cc0 | state=S schedstat=( 950002953 409741723 8979 ) utm=36 stm=58 core=0 HZ=100 | stack=0x6f7955f000-0x6f79561000 stackSize=1043KB | held mutexes= at java.lang.Object.wait(Native method) - waiting on <0x03778e03> (a java.lang.Class<java.lang.ref.ReferenceQueue>) at java.lang.Object.wait(Object.java:442) at java.lang.Object.wait(Object.java:568) at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:218) - locked <0x03778e03> (a java.lang.Class<java.lang.ref.ReferenceQueue>) at java.lang.Daemons$Daemon.run(Daemons.java:140) at java.lang.Thread.run(Thread.java:923) "FinalizerDaemon" daemon prio=5 tid=10 Waiting | group="system" sCount=1 dsCount=0 flags=1 obj=0x12c403d8 self=0xb400006f6bbe7c00 | sysTid=27082 nice=4 cgrp=default sched=0/0 handle=0x6f79558cc0 | state=S schedstat=( 4083230504 452801530 9278 ) utm=353 stm=54 core=4 HZ=100 | stack=0x6f79455000-0x6f79457000 stackSize=1043KB | held mutexes= at java.lang.Object.wait(Native method) - waiting on <0x007e9180> (a java.lang.Object) at java.lang.Object.wait(Object.java:442) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190) - locked <0x007e9180> (a java.lang.Object) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211) at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:274) at java.lang.Daemons$Daemon.run(Daemons.java:140) at java.lang.Thread.run(Thread.java:923) "FinalizerWatchdogDaemon" daemon prio=5 tid=11 Sleeping | group="system" sCount=1 dsCount=0 flags=1 obj=0x12c404a0 self=0xb400006f6bbe9800 | sysTid=27083 nice=4 cgrp=default sched=0/0 handle=0x6f7944ecc0 | state=S schedstat=( 57866405 24556871 655 ) utm=4 stm=0 core=1 HZ=100 | stack=0x6f7934b000-0x6f7934d000 stackSize=1043KB | held mutexes= at java.lang.Thread.sleep(Native method) - sleeping on <0x0f3923b9> (a java.lang.Object) at java.lang.Thread.sleep(Thread.java:442) - locked <0x0f3923b9> (a java.lang.Object) at java.lang.Thread.sleep(Thread.java:358) at java.lang.Daemons$FinalizerWatchdogDaemon.sleepForNanos(Daemons.java:391) at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:420) at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:326) at java.lang.Daemons$Daemon.run(Daemons.java:140) at java.lang.Thread.run(Thread.java:923) "Binder:27068_1" prio=5 tid=12 WaitingForCheckPointsToRun | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40520 self=0xb400006f78653800 | sysTid=27084 nice=0 cgrp=default sched=0/0 handle=0x6f79246cc0 | state=S schedstat=( 1843666204 549965140 1728 ) utm=167 stm=17 core=5 HZ=100 | stack=0x6f7914f000-0x6f79151000 stackSize=995KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 00000000001abe58 /apex/com.android.art/lib64/libart.so (void art::Barrier::Increment<(art::Barrier::LockHandling)1>(art::Thread*, int)+80) native: #03 pc 000000000025ae44 /apex/com.android.art/lib64/libart.so (art::gc::collector::ConcurrentCopying::CaptureThreadRootsForMarking()+876) native: #04 pc 0000000000255134 /apex/com.android.art/lib64/libart.so (art::gc::collector::ConcurrentCopying::MarkingPhase()+1196) native: #05 pc 0000000000254320 /apex/com.android.art/lib64/libart.so (art::gc::collector::ConcurrentCopying::RunPhases()+240) native: #06 pc 0000000000278bc0 /apex/com.android.art/lib64/libart.so (art::gc::collector::GarbageCollector::Run(art::gc::GcCause, bool)+300) native: #07 pc 00000000002959d4 /apex/com.android.art/lib64/libart.so (art::gc::Heap::CollectGarbageInternal(art::gc::collector::GcType, art::gc::GcCause, bool)+4144) native: #08 pc 0000000000299fdc /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+2484) native: #09 pc 000000000065a37c /apex/com.android.art/lib64/libart.so (artAllocObjectFromCodeInitializedRegionTLAB+396) native: #10 pc 000000000013bb78 /apex/com.android.art/lib64/libart.so (art_quick_alloc_object_initialized_region_tlab+104) at android.os.ThreadLocalWorkSource.setUid(ThreadLocalWorkSource.java:68) at android.os.Binder.execTransact(Binder.java:1124) "Binder:27068_2" prio=5 tid=13 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c405b8 self=0xb400006f6bc0c400 | sysTid=27085 nice=0 cgrp=default sched=0/0 handle=0x6f79148cc0 | state=S schedstat=( 2137657 4381250 13 ) utm=0 stm=0 core=5 HZ=100 | stack=0x6f79051000-0x6f79053000 stackSize=995KB | held mutexes= native: #00 pc 00000000000d6a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) native: #01 pc 00000000000935c4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) native: #02 pc 0000000000051a7c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+296) native: #03 pc 0000000000051c6c /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24) native: #04 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60) native: #05 pc 0000000000078630 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24) native: #06 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) native: #07 pc 00000000000a5694 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144) native: #08 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) native: #09 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #10 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "Binder:27068_3" prio=5 tid=14 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40630 self=0xb400006f7866a000 | sysTid=27086 nice=0 cgrp=default sched=0/0 handle=0x6f7904acc0 | state=S schedstat=( 1382571254 1513631999 4854 ) utm=87 stm=51 core=1 HZ=100 | stack=0x6f78f53000-0x6f78f55000 stackSize=995KB | held mutexes= native: #00 pc 00000000000d6a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) native: #01 pc 00000000000935c4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) native: #02 pc 0000000000051a7c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+296) native: #03 pc 0000000000051c6c /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24) native: #04 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60) native: #05 pc 0000000000078630 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24) native: #06 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) native: #07 pc 00000000000a5694 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144) native: #08 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) native: #09 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #10 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "HwBinder:27068_1" prio=5 tid=15 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c406a8 self=0xb400006f6bbeb400 | sysTid=27088 nice=0 cgrp=default sched=0/0 handle=0x6f73efdcc0 | state=S schedstat=( 198333 1771 2 ) utm=0 stm=0 core=7 HZ=100 | stack=0x6f73e06000-0x6f73e08000 stackSize=995KB | held mutexes= native: #00 pc 00000000000d6a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) native: #01 pc 00000000000935c4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) native: #02 pc 0000000000086570 /system/lib64/libhidlbase.so (android::hardware::IPCThreadState::getAndExecuteCommand()+172) native: #03 pc 0000000000087b40 /system/lib64/libhidlbase.so (android::hardware::IPCThreadState::joinThreadPool(bool)+96) native: #04 pc 0000000000096d64 /system/lib64/libhidlbase.so (android::hardware::PoolThread::threadLoop()+24) native: #05 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) native: #06 pc 00000000000a5694 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144) native: #07 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) native: #08 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #09 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "WifiManagerThread" prio=5 tid=16 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40720 self=0xb400006f6bbed000 | sysTid=27089 nice=0 cgrp=default sched=0/0 handle=0x6f73dffcc0 | state=S schedstat=( 178230 0 1 ) utm=0 stm=0 core=6 HZ=100 | stack=0x6f73cfc000-0x6f73cfe000 stackSize=1043KB | held mutexes= native: #00 pc 00000000000d7a58 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8) native: #01 pc 0000000000019acc /system/lib64/libutils.so (android::Looper::pollInner(int)+184) native: #02 pc 00000000000199ac /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) native: #03 pc 0000000000118288 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:335) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:67) "Binder:27068_4" prio=5 tid=17 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40808 self=0xb400006f6bd35800 | sysTid=27090 nice=0 cgrp=default sched=0/0 handle=0x6f73cf5cc0 | state=S schedstat=( 29694731 38369428 120 ) utm=1 stm=1 core=2 HZ=100 | stack=0x6f73bfe000-0x6f73c00000 stackSize=995KB | held mutexes= native: #00 pc 00000000000d6a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) native: #01 pc 00000000000935c4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) native: #02 pc 0000000000051a7c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+296) native: #03 pc 0000000000051c6c /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24) native: #04 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60) native: #05 pc 0000000000078630 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24) native: #06 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) native: #07 pc 00000000000a5694 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144) native: #08 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) native: #09 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #10 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "pool-2-thread-1" prio=5 tid=18 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40b20 self=0xb400006f6bbeec00 | sysTid=27091 nice=0 cgrp=default sched=0/0 handle=0x6f1d7d4cc0 | state=S schedstat=( 1886353 692657 4 ) utm=0 stm=0 core=6 HZ=100 | stack=0x6f1d6d1000-0x6f1d6d3000 stackSize=1043KB | held mutexes= at sun.misc.Unsafe.park(Native method) - waiting on an unknown object at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "pool-3-thread-1" prio=5 tid=22 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40c90 self=0xb400006f6bdc2c00 | sysTid=27114 nice=0 cgrp=default sched=0/0 handle=0x6f1938ccc0 | state=S schedstat=( 204513501403 2427662953 22019 ) utm=17722 stm=2729 core=2 HZ=100 | stack=0x6f19289000-0x6f1928b000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002996c8 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+160) native: #05 pc 00000000004c11a8 /apex/com.android.art/lib64/libart.so (art::mirror::Object* art::gc::Heap::AllocObjectWithAllocator<true, true, art::mirror::SetStringCountAndValueVisitorFromString>(art::Thread*, art::ObjPtr<art::mirror::Class>, unsigned long, art::gc::AllocatorType, art::mirror::SetStringCountAndValueVisitorFromString const&)+1872) native: #06 pc 00000000004c0618 /apex/com.android.art/lib64/libart.so (art::String_fastSubstring(_JNIEnv*, _jobject*, int, int)+396) at java.lang.String.fastSubstring(Native method) at java.lang.String.substring(String.java:2069) at org.json.JSONTokener.nextString(JSONTokener.java:214) at org.json.JSONTokener.nextValue(JSONTokener.java:111) at org.json.JSONTokener.readObject(JSONTokener.java:371) at org.json.JSONTokener.nextValue(JSONTokener.java:104) at org.json.JSONTokener.readArray(JSONTokener.java:440) at org.json.JSONTokener.nextValue(JSONTokener.java:107) at org.json.JSONTokener.readObject(JSONTokener.java:394) at org.json.JSONTokener.nextValue(JSONTokener.java:104) at org.json.JSONObject.<init>(JSONObject.java:165) at org.json.JSONObject.<init>(JSONObject.java:182) at cn.richinfo.dm.business.a.a(:-1) at cn.richinfo.dm.service.f.run(:-1) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "pool-3-thread-2" prio=5 tid=19 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40e00 self=0xb400006f6bdc4800 | sysTid=27116 nice=0 cgrp=default sched=0/0 handle=0x6f1c6cacc0 | state=S schedstat=( 204866699204 2309068900 20936 ) utm=17673 stm=2813 core=1 HZ=100 | stack=0x6f1c5c7000-0x6f1c5c9000 stackSize=1043KB | held mutexes= at sun.misc.Unsafe.park(Native method) - waiting on an unknown object at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "pool-3-thread-4" prio=5 tid=20 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c40ec8 self=0xb400006f6bdc8000 | sysTid=27118 nice=0 cgrp=default sched=0/0 handle=0x6f1b496cc0 | state=S schedstat=( 204828084909 2819158662 21878 ) utm=17777 stm=2705 core=2 HZ=100 | stack=0x6f1b393000-0x6f1b395000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002996c8 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+160) native: #05 pc 00000000004c11a8 /apex/com.android.art/lib64/libart.so (art::mirror::Object* art::gc::Heap::AllocObjectWithAllocator<true, true, art::mirror::SetStringCountAndValueVisitorFromString>(art::Thread*, art::ObjPtr<art::mirror::Class>, unsigned long, art::gc::AllocatorType, art::mirror::SetStringCountAndValueVisitorFromString const&)+1872) native: #06 pc 00000000004c0618 /apex/com.android.art/lib64/libart.so (art::String_fastSubstring(_JNIEnv*, _jobject*, int, int)+396) at java.lang.String.fastSubstring(Native method) at java.lang.String.substring(String.java:2069) at org.json.JSONTokener.nextString(JSONTokener.java:214) at org.json.JSONTokener.nextValue(JSONTokener.java:111) at org.json.JSONTokener.readObject(JSONTokener.java:394) at org.json.JSONTokener.nextValue(JSONTokener.java:104) at org.json.JSONTokener.readArray(JSONTokener.java:440) at org.json.JSONTokener.nextValue(JSONTokener.java:107) at org.json.JSONTokener.readObject(JSONTokener.java:394) at org.json.JSONTokener.nextValue(JSONTokener.java:104) at org.json.JSONObject.<init>(JSONObject.java:165) at org.json.JSONObject.<init>(JSONObject.java:182) at cn.richinfo.dm.business.a.a(:-1) at cn.richinfo.dm.service.f.run(:-1) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "pool-3-thread-3" prio=5 tid=21 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c413d8 self=0xb400006f6bdc6400 | sysTid=27117 nice=0 cgrp=default sched=0/0 handle=0x6f1b5a0cc0 | state=S schedstat=( 201102023433 2507016647 21137 ) utm=17463 stm=2647 core=5 HZ=100 | stack=0x6f1b49d000-0x6f1b49f000 stackSize=1043KB | held mutexes= at sun.misc.Unsafe.park(Native method) - waiting on an unknown object at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "pool-3-thread-6" prio=5 tid=24 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c414a0 self=0xb400006f6bdd0c00 | sysTid=27226 nice=0 cgrp=default sched=0/0 handle=0x6f1606ecc0 | state=S schedstat=( 207521618734 4234405161 21755 ) utm=17983 stm=2768 core=1 HZ=100 | stack=0x6f15f6b000-0x6f15f6d000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002996c8 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+160) native: #05 pc 000000000065a37c /apex/com.android.art/lib64/libart.so (artAllocObjectFromCodeInitializedRegionTLAB+396) native: #06 pc 000000000013bb78 /apex/com.android.art/lib64/libart.so (art_quick_alloc_object_initialized_region_tlab+104) at java.util.LinkedHashMap.entrySet(LinkedHashMap.java:670) at org.json.JSONObject.writeTo(JSONObject.java:733) at org.json.JSONStringer.value(JSONStringer.java:246) at org.json.JSONArray.writeTo(JSONArray.java:616) at org.json.JSONStringer.value(JSONStringer.java:242) at org.json.JSONObject.writeTo(JSONObject.java:734) at org.json.JSONObject.toString(JSONObject.java:702) at cn.richinfo.dm.business.a.a(:-1) at cn.richinfo.dm.service.f.run(:-1) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "pool-3-thread-7" prio=5 tid=25 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c41670 self=0xb400006f6bdc1000 | sysTid=27250 nice=0 cgrp=default sched=0/0 handle=0x6f16178cc0 | state=S schedstat=( 212465331917 4054930191 23028 ) utm=18456 stm=2790 core=0 HZ=100 | stack=0x6f16075000-0x6f16077000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002996c8 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+160) native: #05 pc 000000000065a37c /apex/com.android.art/lib64/libart.so (artAllocObjectFromCodeInitializedRegionTLAB+396) native: #06 pc 000000000013bb78 /apex/com.android.art/lib64/libart.so (art_quick_alloc_object_initialized_region_tlab+104) at java.util.LinkedHashMap.newNode(LinkedHashMap.java:280) at java.util.HashMap.putVal(HashMap.java:630) at java.util.HashMap.put(HashMap.java:611) at org.json.JSONObject.put(JSONObject.java:273) at org.json.JSONTokener.readObject(JSONTokener.java:394) at org.json.JSONTokener.nextValue(JSONTokener.java:104) at org.json.JSONTokener.readArray(JSONTokener.java:440) at org.json.JSONTokener.nextValue(JSONTokener.java:107) at org.json.JSONTokener.readObject(JSONTokener.java:394) at org.json.JSONTokener.nextValue(JSONTokener.java:104) at org.json.JSONObject.<init>(JSONObject.java:165) at org.json.JSONObject.<init>(JSONObject.java:182) at cn.richinfo.dm.business.a.a(:-1) at cn.richinfo.dm.service.f.run(:-1) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "pool-3-thread-8" prio=5 tid=26 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c418c0 self=0xb400006f6bdcf000 | sysTid=27283 nice=0 cgrp=default sched=0/0 handle=0x6f14f64cc0 | state=S schedstat=( 207027702908 1982910208 20993 ) utm=17948 stm=2753 core=1 HZ=100 | stack=0x6f14e61000-0x6f14e63000 stackSize=1043KB | held mutexes= at sun.misc.Unsafe.park(Native method) - waiting on an unknown object at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "queued-work-looper" prio=5 tid=27 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c41988 self=0xb400006f6bbf2400 | sysTid=27363 nice=-2 cgrp=default sched=0/0 handle=0x6f13e5acc0 | state=S schedstat=( 401559066 2764794 165 ) utm=31 stm=8 core=6 HZ=100 | stack=0x6f13d57000-0x6f13d59000 stackSize=1043KB | held mutexes= native: #00 pc 00000000000d7a58 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8) native: #01 pc 0000000000019acc /system/lib64/libutils.so (android::Looper::pollInner(int)+184) native: #02 pc 00000000000199ac /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) native: #03 pc 0000000000118288 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:335) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:67) "pool-3-thread-9" prio=5 tid=28 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c41a70 self=0xb400006f6bbf4000 | sysTid=15971 nice=0 cgrp=default sched=0/0 handle=0x6f8289ecc0 | state=S schedstat=( 254896 20625 1 ) utm=0 stm=0 core=1 HZ=100 | stack=0x6f8279b000-0x6f8279d000 stackSize=1043KB | held mutexes= at sun.misc.Unsafe.park(Native method) - waiting on an unknown object at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) "Binder:27068_5" prio=5 tid=23 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c41b38 self=0xb400006f6bdc9c00 | sysTid=15972 nice=0 cgrp=default sched=0/0 handle=0x6f8276bcc0 | state=S schedstat=( 8655105 16940732 42 ) utm=0 stm=0 core=1 HZ=100 | stack=0x6f82674000-0x6f82676000 stackSize=995KB | held mutexes= native: #00 pc 00000000000d6a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) native: #01 pc 00000000000935c4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) native: #02 pc 0000000000051a7c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+296) native: #03 pc 0000000000051c6c /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24) native: #04 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60) native: #05 pc 0000000000078630 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24) native: #06 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) native: #07 pc 00000000000a5694 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144) native: #08 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) native: #09 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #10 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "Thread-1963" prio=5 tid=30 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12c41bb0 self=0xb400006f6bd49c00 | sysTid=16014 nice=0 cgrp=default sched=0/0 handle=0x6f8254bcc0 | state=S schedstat=( 2833698743 19182968 143 ) utm=277 stm=5 core=1 HZ=100 | stack=0x6f82448000-0x6f8244a000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 0000000000294d0c /apex/com.android.art/lib64/libart.so (art::gc::Heap::CollectGarbageInternal(art::gc::collector::GcType, art::gc::GcCause, bool)+872) native: #04 pc 000000000029a914 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+4844) native: #05 pc 000000000065a860 /apex/com.android.art/lib64/libart.so (artAllocArrayFromCodeResolvedRegionTLAB+560) native: #06 pc 000000000013c084 /apex/com.android.art/lib64/libart.so (art_quick_alloc_array_resolved16_region_tlab+132) at java.util.Arrays.copyOf(Arrays.java:3257) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448) at java.lang.StringBuilder.append(StringBuilder.java:137) at cn.richinfo.dm.receiver.DMBroadCastReceiver.b(:-1) at cn.richinfo.dm.receiver.DMBroadCastReceiver.a(:-1) at cn.richinfo.dm.receiver.a.run(:-1) at java.lang.Thread.run(Thread.java:923) "Binder:27068_6" prio=5 tid=29 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x12e00120 self=0xb400006f6bd48000 | sysTid=16265 nice=0 cgrp=default sched=0/0 handle=0x6f82662cc0 | state=S schedstat=( 1432711 3536458 6 ) utm=0 stm=0 core=0 HZ=100 | stack=0x6f8256b000-0x6f8256d000 stackSize=995KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 00000000003c5fcc /apex/com.android.art/lib64/libart.so (art::JNI<false>::CallStaticObjectMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+500) native: #03 pc 00000000000f44d8 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticObjectMethod(_jclass*, _jmethodID*, ...)+124) native: #04 pc 00000000001280d8 /system/lib64/libandroid_runtime.so (android::javaObjectForIBinder(_JNIEnv*, android::sp<android::IBinder> const&)+348) native: #05 pc 000000000012ba28 /system/lib64/libandroid_runtime.so (JavaDeathRecipient::binderDied(android::wp<android::IBinder> const&)+140) native: #06 pc 000000000004b800 /system/lib64/libbinder.so (android::BpBinder::reportOneDeath(android::BpBinder::Obituary const&)+148) native: #07 pc 000000000004b720 /system/lib64/libbinder.so (android::BpBinder::sendObituary()+148) native: #08 pc 0000000000052048 /system/lib64/libbinder.so (android::IPCThreadState::executeCommand(int)+680) native: #09 pc 0000000000051cf0 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+156) native: #10 pc 0000000000052528 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+60) native: #11 pc 0000000000078630 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24) native: #12 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) native: #13 pc 00000000000a5694 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144) native: #14 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) native: #15 pc 00000000000eb868 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) native: #16 pc 000000000008ba88 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (no managed stack frames) "Binder:27068_7" prio=5 tid=32 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12e00198 self=0xb400006f7866bc00 | sysTid=16267 nice=0 cgrp=default sched=0/0 handle=0x6f8232ecc0 | state=S schedstat=( 1138386 6174220 8 ) utm=0 stm=0 core=1 HZ=100 | stack=0x6f82237000-0x6f82239000 stackSize=995KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002996c8 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+160) native: #05 pc 000000000065a37c /apex/com.android.art/lib64/libart.so (artAllocObjectFromCodeInitializedRegionTLAB+396) native: #06 pc 000000000013bb78 /apex/com.android.art/lib64/libart.so (art_quick_alloc_object_initialized_region_tlab+104) at android.content.pm.ParceledListSlice$1.createFromParcel(ParceledListSlice.java:80) at android.content.pm.ParceledListSlice$1.createFromParcel(ParceledListSlice.java:78) at android.app.IApplicationThread$Stub.onTransact(IApplicationThread.java:661) at android.os.Binder.execTransactInternal(Binder.java:1162) at android.os.Binder.execTransact(Binder.java:1126) "Thread-1966" prio=5 tid=31 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12e00210 self=0xb400006f6bd4b800 | sysTid=16269 nice=0 cgrp=default sched=0/0 handle=0x6f82225cc0 | state=S schedstat=( 697344 2097656 6 ) utm=0 stm=0 core=1 HZ=100 | stack=0x6f82122000-0x6f82124000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002996c8 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+160) native: #05 pc 000000000065a37c /apex/com.android.art/lib64/libart.so (artAllocObjectFromCodeInitializedRegionTLAB+396) native: #06 pc 000000000013bb78 /apex/com.android.art/lib64/libart.so (art_quick_alloc_object_initialized_region_tlab+104) at android.content.ComponentName$1.createFromParcel(ComponentName.java:390) at android.content.ComponentName$1.createFromParcel(ComponentName.java:388) at android.app.IActivityManager$Stub$Proxy.startService(IActivityManager.java:6064) at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1710) at android.app.ContextImpl.startService(ContextImpl.java:1680) at android.content.ContextWrapper.startService(ContextWrapper.java:731) at android.content.ContextWrapper.startService(ContextWrapper.java:731) at cn.richinfo.dm.receiver.DMBroadCastReceiver.b(:-1) at cn.richinfo.dm.receiver.DMBroadCastReceiver.a(:-1) at cn.richinfo.dm.receiver.a.run(:-1) at java.lang.Thread.run(Thread.java:923) "Thread-1965" prio=5 tid=33 WaitingForGcToComplete | group="main" sCount=1 dsCount=0 flags=1 obj=0x12e003a8 self=0xb400006f6bd4d400 | sysTid=16268 nice=0 cgrp=default sched=0/0 handle=0x6f82438cc0 | state=S schedstat=( 898177 6904949 5 ) utm=0 stm=0 core=5 HZ=100 | stack=0x6f82335000-0x6f82337000 stackSize=1043KB | held mutexes= native: #00 pc 0000000000086b4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) native: #01 pc 00000000001b0418 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148) native: #02 pc 000000000028f01c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToCompleteLocked(art::gc::GcCause, art::Thread*)+144) native: #03 pc 00000000002a725c /apex/com.android.art/lib64/libart.so (art::gc::Heap::WaitForGcToComplete(art::gc::GcCause, art::Thread*)+440) native: #04 pc 00000000002996c8 /apex/com.android.art/lib64/libart.so (art::gc::Heap::AllocateInternalWithGc(art::Thread*, art::gc::AllocatorType, bool, unsigned long, unsigned long*, unsigned long*, unsigned long*, art::ObjPtr<art::mirror::Class>*)+160) native: #05 pc 000000000065a37c /apex/com.android.art/lib64/libart.so (artAllocObjectFromCodeInitializedRegionTLAB+396) native: #06 pc 000000000013bb78 /apex/com.android.art/lib64/libart.so (art_quick_alloc_object_initialized_region_tlab+104) at android.content.ComponentName$1.createFromParcel(ComponentName.java:390) at android.content.ComponentName$1.createFromParcel(ComponentName.java:388) at android.app.IActivityManager$Stub$Proxy.startService(IActivityManager.java:6064) at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1710) at android.app.ContextImpl.startService(ContextImpl.java:1680) at android.content.ContextWrapper.startService(ContextWrapper.java:731) at android.content.ContextWrapper.startService(ContextWrapper.java:731) at cn.richinfo.dm.receiver.DMBroadCastReceiver.b(:-1) at cn.richinfo.dm.receiver.DMBroadCastReceiver.a(:-1) at cn.richinfo.dm.receiver.a.run(:-1) at java.lang.Thread.run(Thread.java:923) ----- end 27068 ----- ----- Waiting Channels: pid 27068 at 2025-09-01 08:35:45 ----- Cmd line: com.miui.dmregservice sysTid=27068 do_epoll_wait sysTid=27074 futex_wait_queue_me sysTid=27075 futex_wait_queue_me sysTid=27076 futex_wait_queue_me sysTid=27077 futex_wait_queue_me sysTid=27078 do_sigtimedwait sysTid=27079 futex_wait_queue_me sysTid=27080 futex_wait_queue_me sysTid=27081 futex_wait_queue_me sysTid=27082 0 sysTid=27083 futex_wait_queue_me sysTid=27084 futex_wait_queue_me sysTid=27085 binder_ioctl sysTid=27086 binder_ioctl sysTid=27088 binder_ioctl sysTid=27089 do_epoll_wait sysTid=27090 futex_wait_queue_me sysTid=27091 futex_wait_queue_me sysTid=27114 futex_wait_queue_me sysTid=27116 futex_wait_queue_me sysTid=27117 futex_wait_queue_me sysTid=27118 futex_wait_queue_me sysTid=27226 futex_wait_queue_me sysTid=27250 futex_wait_queue_me sysTid=27283 futex_wait_queue_me sysTid=27363 do_epoll_wait sysTid=15971 futex_wait_queue_me sysTid=15972 binder_ioctl sysTid=16013 futex_wait_queue_me sysTid=16014 futex_wait_queue_me ----- end 27068 -----

Modules linked in: halob_drv(OE) tls tcp_diag inet_diag xt_tcpudp xt_MASQUERADE nft_compat nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables nfnetlink sctp ip6_udp_tunnel udp_tunnel libcrc32c binfmt_misc nls_iso8859_1 kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul polyval_clmulni polyval_generic ghash_clmulni_intel sha512_ssse3 aesni_intel crypto_simd cryptd virtio_gpu virtio_dma_buf drm_shmem_helper joydev input_leds drm_kms_helper syscopyarea serio_raw sysfillrect sysimgblt sch_fq_codel ipmi_devintf ipmi_msghandler msr parport_pc ppdev lp parport drm efi_pstore ip_tables x_tables autofs4 hid_generic usbhid hid i40e psmouse virtio_net net_failover failover floppy [last unloaded: halob_drv(OE)] [3354475.147613] CPU: 7 PID: 2104999 Comm: kworker/7:0 Kdump: loaded Tainted: G W OE 6.2.0-36-generic #37~22.04.1-Ubuntu [3354475.147616] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014 [3354475.147619] Workqueue: i40e i40e_service_task [i40e] [3354475.147643] RIP: 0010:i40e_setup_tx_descriptors+0xa8/0xf0 [i40e] [3354475.147672] Code: c0 74 35 c7 43 50 00 00 00 00 31 c0 c7 83 a0 00 00 00 ff ff ff ff 5b 41 5c 5d 31 d2 31 c9 31 f6 31 ff 45 31 c0 c3 cc cc cc cc <0f> 0b e9 78 ff ff ff b8 f4 ff ff ff eb de 8b 93 a8 00 00 00 48 c7 [3354475.147675] RSP: 0018:ffff97da83bc7cc8 EFLAGS: 00010286 [3354475.147677] RAX: ffff89d4cdd92600 RBX: ffff89d4cba93400 RCX: 0000000000000000 [3354475.147682] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff89d4cba93400 [3354475.147684] RBP: ffff97da83bc7cd8 R08: 0000000000000000 R09: 0000000000000000 [3354475.147685] R10: 0000000000000000 R11: 0000000000000000 R12: ffff89d4c1cf50d0 [3354475.147687] R13: ffff89d4cba8a000 R14: ffff89d4cba8e000 R15: ffff89d4cba8e000 [3354475.147689] FS: 0000000000000000(0000) GS:ffff89ddd77c0000(0000) knlGS:0000000000000000 [3354475.147691] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [3354475.147693] CR2: 00007fc0d3e83000 CR3: 0000000218bd4004 CR4: 0000000000770ee0 [3354475.147698] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [3354475.147699] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [3354475.147701] PKRU: 55555554 [3354475.147702] Call Trace: [3354475.147708] <TASK> [3354475.147725] ? show_regs+0x72/0x90 [3354475.147761] ? i40e_setup_tx_descriptors+0xa8/0xf0 [i40e] [3354475.147786] ? __warn+0x8d/0x160 [3354475.147802] ? i40e_setup_tx_descriptors+0xa8/0xf0 [i40e] [3354475.147836] ? report_bug+0x1bb/0x1d0 [3354475.147863] ? handle_bug+0x46/0x90 [3354475.147882] ? exc_invalid_op+0x19/0x80 [3354475.147885] ? asm_exc_invalid_op+0x1b/0x20 [3354475.147903] ? i40e_setup_tx_descriptors+0xa8/0xf0 [i40e] [3354475.147928] i40e_vsi_open+0x5c/0x320 [i40e] [3354475.147951] i40e_open+0x62/0x130 [i40e] [3354475.147974] i40e_unquiesce_vsi+0x35/0x70 [i40e] [3354475.147995] i40e_rebuild+0x640/0x9c0 [i40e] [3354475.148017] ? i40e_pf_reset+0x10a/0x2a0 [i40e] [3354475.148042] i40e_reset_and_rebuild+0x5c/0x70 [i40e] [3354475.148063] i40e_do_reset+0x160/0x280 [i40e] [3354475.148085] i40e_reset_subtask+0x11d/0x120 [i40e] [3354475.148107] i40e_service_task+0xe0/0x190 [i40e] [3354475.148129] process_one_work+0x21c/0x440 [3354475.148139] worker_thread+0x50/0x3f0 [3354475.148143] ? __pfx_worker_thread+0x10/0x10 [3354475.148145] kthread+0xeb/0x120 [3354475.148155] ? __pfx_kthread+0x10/0x10 [3354475.148159] ret_from_fork+0x29/0x50 [3354475.148172] </TASK> [3354475.148173] ---[ end trace 0000000000000000 ]--- [3354475.148206] ------------[ cut here ]------------ 这是什么内核挂死信息?

现在有个问题,我选择账号1进行抖音数据采集视频列表,然后切换平台的小红书的时候,发现账号1在转圈采集,好像显示抖音账号1和小红书账号1显示有点重叠,账号1-账号6都检查一下,切换平台的时候,不是要暂停采集数据,是放到后台采集数据,account_widget.py的from PyQt6.QtWidgets import ( QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem, QFrame, QGridLayout, QMessageBox, QHeaderView, QAbstractItemView, QApplication, QMenu, QFileDialog, QStyle, QProgressBar,QComboBox ) from PyQt6.QtCore import Qt, QThread, pyqtSignal, QTimer from PyQt6.QtGui import QFont, QColor from tanchen_v2.core_v1.collector_threads import DouyinDataCollectorThread from tanchen_v2.ui.comment_window import CommentWindow from tanchen_v2.core_v1.loading_indicator import LoadingIndicator from tanchen_v2.core_v1.config_manager import ConfigManager import pandas as pd import json import os from tanchen_v2.core_v1.log_tc import logger class AccountWidget(QWidget): def __init__(self, index, config_manager,platform:str="douyin"): super().__init__() self.index = index self.account_index = index self.data = [] self.current_platform = platform #默认平台 self.platform = platform self.platform_configs=config_manager self.platform_data={}# 按平台存储数据:{"douyin":data,"xiaohongshu":data} self.config_manager = config_manager self.is_editing = True self.collector_thread = None self.comment_window = None self.init_ui() self.load_config() def init_ui(self): main_layout = QVBoxLayout() # 平台选择器 - 移到账号标题上方 # platform_layout = QHBoxLayout() # platform_layout.addWidget(QLabel("选择平台:")) # # self.platform_combo = QComboBox() # self.platform_combo.addItem("抖音", "douyin") # self.platform_combo.addItem("小红书", "xiaohongshu") # self.platform_combo.currentIndexChanged.connect(self.switch_platform) # platform_layout.addWidget(self.platform_combo) # platform_layout.addStretch() # main_layout.addLayout(platform_layout) # 平台选择器放在最上方 # 账号标题 title_layout = self.create_title_layout() main_layout.addLayout(title_layout) # 配置区域 config_layout = self.create_config_layout() main_layout.addLayout(config_layout) # 控制按钮 btn_layout = self.create_button_layout() main_layout.addLayout(btn_layout) # 表格容器 self.table_container = self.create_table_container() main_layout.addWidget(self.table_container, 1) # 状态栏 self.status_label = QLabel("就绪") self.status_label.setStyleSheet(""" QLabel { color: #666; font-size: 12px; padding: 5px; border-top: 1px solid #e0e0e0; } """) main_layout.addWidget(self.status_label) self.setLayout(main_layout) self.set_edit_mode(True) def update_platform(self,platform): """更新账号平台并保留配置""" # 保存当前平台配置 self.platform_configs[self.platform] = self.get_current_config() # 更新平台 self.platform = platform self.platform_config_group.setTitle(f"{platform}配置") # 加载新平台配置 self.update_platform_config_ui() def create_title_layout(self): layout = QHBoxLayout() self.title_label = QLabel(f"账号 {self.index + 1}") self.title_label.setFont(QFont("Arial", 12, QFont.Weight.Bold)) layout.addWidget(self.title_label) layout.addWidget(QLabel("备注:")) self.remark_input = QLineEdit() self.remark_input.setPlaceholderText("账号备注...") self.remark_input.setMaximumWidth(200) layout.addWidget(self.remark_input) self.edit_btn = self.create_icon_button("编辑配置", QStyle.StandardPixmap.SP_FileDialogDetailedView, "#FFC107", "#FFA000", "#FF8F00") self.edit_btn.clicked.connect(self.toggle_edit_mode) layout.addWidget(self.edit_btn) self.save_btn = self.create_icon_button("保存配置", QStyle.StandardPixmap.SP_DialogSaveButton, "#4CAF50", "#388E3C", "#2E7D32") self.save_btn.clicked.connect(self.save_config) layout.addWidget(self.save_btn) layout.addStretch() return layout def create_config_layout(self): layout = QGridLayout() layout.setColumnStretch(1, 1) # 关键字输入 layout.addWidget(QLabel("关键字:"), 0, 0) self.keyword_input = QLineEdit() self.keyword_input.setPlaceholderText("输入搜索关键字...") layout.addWidget(self.keyword_input, 0, 1) # Cookie输入 layout.addWidget(QLabel("Cookie:"), 1, 0) self.cookie_input = QLineEdit() self.cookie_input.setPlaceholderText("输入账号Cookie...") self.cookie_input.setEchoMode(QLineEdit.EchoMode.Password) layout.addWidget(self.cookie_input, 1, 1) # 显示/隐藏Cookie按钮 self.toggle_cookie_btn = QPushButton("显示") self.toggle_cookie_btn.setMaximumWidth(60) self.toggle_cookie_btn.setStyleSheet("QPushButton { padding: 3px; border-radius: 3px; }") self.toggle_cookie_btn.clicked.connect(self.toggle_cookie_visibility) layout.addWidget(self.toggle_cookie_btn, 1, 2) # 评论关键字输入 layout.addWidget(QLabel("评论关键字:"), 2, 0) self.comment_keyword_input = QLineEdit() self.comment_keyword_input.setPlaceholderText("输入评论关键字过滤...支持中文逗号、英文逗号、空格例如:测试1,测试2") layout.addWidget(self.comment_keyword_input, 2, 1) return layout def create_button_layout(self): layout = QHBoxLayout() # 开始采集按钮 self.start_btn = self.create_action_button("开始采集", QStyle.StandardPixmap.SP_MediaPlay, "#4CAF50", "#388E3C", "#2E7D32") self.start_btn.clicked.connect(self.start_collecting) layout.addWidget(self.start_btn) # 停止采集按钮 self.stop_btn = self.create_action_button("停止采集", QStyle.StandardPixmap.SP_MediaStop, "#f44336", "#D32F2F", "#B71C1C") self.stop_btn.clicked.connect(self.stop_collecting) self.stop_btn.setEnabled(False) layout.addWidget(self.stop_btn) # 获取评论按钮 self.get_comments_btn = self.create_action_button("获取评论", QStyle.StandardPixmap.SP_MessageBoxInformation, "#9C27B0", "#7B1FA2", "#4A148C") self.get_comments_btn.clicked.connect(self.get_comments) layout.addWidget(self.get_comments_btn) # 导出数据按钮 self.export_btn = self.create_action_button("导出数据", QStyle.StandardPixmap.SP_DialogSaveButton, "#2196F3", "#1976D2", "#0D47A1") self.export_btn.clicked.connect(self.export_data) layout.addWidget(self.export_btn) # 清空表格按钮 self.clear_table_btn = self.create_action_button("清空表格", QStyle.StandardPixmap.SP_TrashIcon, "#FF9800", "#F57C00", "#EF6C00") self.clear_table_btn.clicked.connect(self.clear_table_data) layout.addWidget(self.clear_table_btn) layout.addStretch() return layout def setup_table_columns(self,platform): """根据平台设置表格列""" if platform == "douyin": self.table.setColumnCount(7) self.table.setHorizontalHeaderLabels( ["序号", "作者昵称", "类型", "视频地址", "评论数量", "发布时间", "视频ID"]) # 设置列宽 self.table.setColumnWidth(0, 60) self.table.setColumnWidth(1, 150) self.table.setColumnWidth(2, 100) self.table.setColumnWidth(3, 300) self.table.setColumnWidth(4, 100) self.table.setColumnWidth(5, 150) self.table.setColumnWidth(6, 200) elif platform == "xiaohongshu": self.table.setColumnCount(8) self.table.setHorizontalHeaderLabels( ["序号", "作者昵称", "类型", "笔记链接", "点赞数", "收藏数", "发布时间", "笔记ID"]) # 设置列宽 self.table.setColumnWidth(0, 60) self.table.setColumnWidth(1, 150) self.table.setColumnWidth(2, 100) self.table.setColumnWidth(3, 300) self.table.setColumnWidth(4, 80) self.table.setColumnWidth(5, 80) self.table.setColumnWidth(6, 150) self.table.setColumnWidth(7, 200) # 添加新平台时只需在这里添加新的列配置 def create_table_container(self): container = QFrame() container.setFrameShape(QFrame.Shape.StyledPanel) container.setStyleSheet("background-color: white; border: 1px solid #E0E0E0; border-radius: 4px;") layout = QVBoxLayout(container) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) # v2数据表格 self.table = QTableWidget() self.setup_table_columns(self.current_platform) # 根据平台初始化表格列 self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Interactive) self.table.horizontalHeader().setSectionsMovable(True) self.table.verticalHeader().setVisible(False) self.table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers) self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) self.table.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection) self.table.setSortingEnabled(True) self.table.setStyleSheet(""" QTableWidget { background-color: white; alternate-background-color: #f9f9f9; gridline-color: #e0e0e0; } QHeaderView::section { background-color: #f0f0f0; padding: 4px; border: 1px solid #e0e0e0; font-weight: bold; } """) self.table.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) self.table.customContextMenuRequested.connect(self.show_context_menu) layout.addWidget(self.table) # 覆盖层用于显示加载指示器 self.overlay = QWidget(container) self.overlay.setGeometry(0, 0, container.width(), container.height()) self.overlay.setStyleSheet("background-color: rgba(255, 255, 255, 0.7);") overlay_layout = QVBoxLayout(self.overlay) overlay_layout.setAlignment(Qt.AlignmentFlag.AlignCenter) self.loading_indicator = LoadingIndicator() overlay_layout.addWidget(self.loading_indicator) self.overlay.hide() return container def create_icon_button(self, text, icon, base_color, hover_color, pressed_color): button = QPushButton(text) button.setIcon(self.style().standardIcon(icon)) text_color = "black" if base_color == "#FFC107" else "white" button.setStyleSheet(f""" QPushButton {{ background-color: {base_color}; color: {text_color}; padding: 5px; border-radius: 4px; }} QPushButton:hover {{ background-color: {hover_color}; }} QPushButton:pressed {{ background-color: {pressed_color}; }} """) return button def create_action_button(self, text, icon, base_color, hover_color, pressed_color): button = QPushButton(text) button.setIcon(self.style().standardIcon(icon)) button.setStyleSheet(f""" QPushButton {{ background-color: {base_color}; color: white; padding: 8px 16px; border-radius: 5px; font-weight: bold; }} QPushButton:hover {{ background-color: {hover_color}; }} QPushButton:pressed {{ background-color: {pressed_color}; }} QPushButton:disabled {{ background-color: {base_color}80; }} """) return button def toggle_cookie_visibility(self): if self.cookie_input.echoMode() == QLineEdit.EchoMode.Password: self.cookie_input.setEchoMode(QLineEdit.EchoMode.Normal) self.toggle_cookie_btn.setText("隐藏") else: self.cookie_input.setEchoMode(QLineEdit.EchoMode.Password) self.toggle_cookie_btn.setText("显示") def toggle_edit_mode(self): self.set_edit_mode(not self.is_editing) def set_edit_mode(self, edit_mode): self.is_editing = edit_mode self.remark_input.setReadOnly(not edit_mode) self.keyword_input.setReadOnly(not edit_mode) self.cookie_input.setReadOnly(not edit_mode) self.edit_btn.setVisible(not edit_mode) self.save_btn.setVisible(edit_mode) bg_color = "#f5f5f5" if not edit_mode else "white" self.remark_input.setStyleSheet(f"background-color: {bg_color}; border: 1px solid #e0e0e0; border-radius: 3px;") self.keyword_input.setStyleSheet( f"background-color: {bg_color}; border: 1px solid #e0e0e0; border-radius: 3px;") self.cookie_input.setStyleSheet(f"background-color: {bg_color}; border: 1px solid #e0e0e0; border-radius: 3px;") if edit_mode: self.status_label.setText("编辑模式:可以修改配置") else: self.status_label.setText("配置已锁定,点击'编辑配置'修改") def switch_platform(self,new_platform): """切换平台时的处理""" # 保存当前平台的数据 self.save_current_data() # 更新当前平台 self.current_platform = new_platform # 更新表格列 self.setup_table_columns(new_platform) # 加载新平台的配置 self.load_config() # 加载新平台的数据 self.load_platform_data() # 更新状态栏 self.status_label.setText(f"已切换到{new_platform}平台") def save_current_data(self): """保存当前平台的数据到内存""" # 从表格获取当前数据 data = [] for row in range(self.table.rowCount()): row_data = {} for col in range(self.table.columnCount()): item = self.table.item(row, col) if item: header = self.table.horizontalHeaderItem(col).text() row_data[header] = item.text() data.append(row_data) # 保存到平台数据字典 self.platform_data[self.current_platform] = data def load_platform_data(self): """加载当前平台的数据到表格""" data = self.platform_data.get(self.current_platform, []) # 清空表格 self.table.setRowCount(0) if not data: self.status_label.setText(f"{self.current_platform}平台无数据") return # 填充表格 self.table.setRowCount(len(data)) for row, item in enumerate(data): for col in range(self.table.columnCount()): header = self.table.horizontalHeaderItem(col).text() value = item.get(header, "") table_item = QTableWidgetItem(value) table_item.setFlags(Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled) self.table.setItem(row, col, table_item) self.status_label.setText(f"已加载{len(data)}条{self.current_platform}数据") def save_config(self): #v2 self.set_edit_mode(False) # 保存配置时按平台存储 config = { "remark": self.remark_input.text(), "keyword": self.keyword_input.text(), "cookie": self.cookie_input.text(), "comment_keyword": self.comment_keyword_input.text(), "platform": self.current_platform # 保存当前平台 } # 使用平台特定的键保存配置 self.config_manager.save_account_config(self.index, config, self.current_platform) self.status_label.setText("配置已保存") self.save_btn.setStyleSheet(""" QPushButton { background-color: #2E7D32; color: white; padding: 5px; border-radius: 4px; } """) QTimer.singleShot(500, self.restore_save_button_style) def restore_save_button_style(self): self.save_btn.setStyleSheet(""" QPushButton { background-color: #4CAF50; color: white; padding: 5px; border-radius: 4px; } QPushButton:hover { background-color: #388E3C; } QPushButton:pressed { background-color: #2E7D32; } """) def load_config(self): # 加载当前平台的配置 config = self.config_manager.load_account_config(self.index, self.current_platform) if config: self.remark_input.setText(config.get("remark", "")) self.keyword_input.setText(config.get("keyword", "")) self.cookie_input.setText(config.get("cookie", "")) self.comment_keyword_input.setText(config.get("comment_keyword", "")) logger.debug(f"平台:{self.current_platform}--账号{self.index + 1}加载配置成功") logger.debug(f"平台:{self.current_platform}--账号{self.index + 1}加载配置:{str(config)}") else: # 如果没有配置,初始化空值 self.remark_input.setText("") self.keyword_input.setText("") self.cookie_input.setText("") self.comment_keyword_input.setText("") logger.debug(f"平台:{ self.current_platform}--账号{self.index + 1}无配置,使用默认值") logger.debug(f"平台:{self.current_platform}--账号{self.index + 1}无配置, 加载配置:{str(config)}") def start_collecting(self): keyword = self.keyword_input.text().strip() cookie = self.cookie_input.text().strip() if not keyword: QMessageBox.warning(self, "输入错误", "请输入搜索关键字") return if not cookie: QMessageBox.warning(self, "输入错误", "请输入账号Cookie") return if self.collector_thread and self.collector_thread.isRunning(): self.collector_thread.stop() self.collector_thread.quit() self.collector_thread.wait(1000) self.overlay.show() self.loading_indicator.start() self.start_btn.setStyleSheet(""" QPushButton { background-color: #2E7D32; color: white; padding: 8px 16px; border-radius: 5px; font-weight: bold; } """) # 使用爬虫工厂创建对应平台的爬虫线程 try: from core.Crawler.crawler_factory import CrawlerFactory self.collector_thread = CrawlerFactory.create_crawler( platform=self.current_platform, account_index=self.index, config={ "keyword": keyword, "cookie": cookie } ) # 设置关键字 self.collector_thread.keyword = keyword except Exception as e: logger.warning(f"创建爬虫失败: {str(e)},{str(self.current_platform)}") self.handle_error(f"创建爬虫失败: {str(e)}") self.overlay.hide() self.loading_indicator.stop() return try: self.collector_thread.data_collected.connect(self.update_data) self.collector_thread.status_updated.connect(self.update_status) self.collector_thread.error_occurred.connect(self.handle_error) self.collector_thread.finished.connect(self.on_collection_finished) self.collector_thread.start(keyword) self.start_btn.setEnabled(False) self.stop_btn.setEnabled(True) self.keyword_input.setEnabled(False) self.cookie_input.setEnabled(False) self.status_label.setText(f"开始采集{self.current_platform}: {keyword}") self.status_label.setStyleSheet("color: #4CAF50; font-weight: bold;") except Exception as e: logger.warning(f"启动爬虫失败: {str(e)}") self.handle_error(f"启动爬虫失败: {str(e)}") def handle_error(self, error_message): self.status_label.setText(error_message) self.status_label.setStyleSheet("color: #f44336; font-weight: bold;") #self.stop_collecting() def update_status(self, message): self.status_label.setText(message) self.status_label.setStyleSheet("color: #4CAF50; font-weight: bold;") def on_collection_finished(self): self.start_btn.setEnabled(True) self.stop_btn.setEnabled(False) self.keyword_input.setEnabled(True) self.cookie_input.setEnabled(True) self.overlay.hide() self.loading_indicator.stop() self.restore_start_button_style() def restore_start_button_style(self): self.start_btn.setStyleSheet(""" QPushButton { background-color: #4CAF50; color: white; padding: 8px 16px; border-radius: 5px; font-weight: bold; } QPushButton:hover { background-color: #388E3C; } QPushButton:pressed { background-color: #2E7D32; } QPushButton:disabled { background-color: #81C784; } """) def stop_collecting(self): if self.collector_thread and self.collector_thread.isRunning(): self.collector_thread.stop() self.collector_thread.quit() self.collector_thread.wait(1000) self.start_btn.setEnabled(True) self.stop_btn.setEnabled(False) self.keyword_input.setEnabled(True) self.cookie_input.setEnabled(True) self.overlay.hide() self.loading_indicator.stop() self.restore_start_button_style() self.status_label.setText("采集已停止") self.status_label.setStyleSheet("color: #f44336; font-weight: bold;") def remove_duplicates(self, data): seen_urls = set() unique_data = [] url_field = "视频地址" if self.current_platform == "douyin" else "笔记链接" for item in data: item_url = item.get(url_field, "") if item_url and item_url not in seen_urls: seen_urls.add(item_url) unique_data.append(item) return unique_data def update_data(self, new_data): logger.debug("new_data",new_data) if not new_data or not isinstance(new_data, list): QMessageBox.warning(self, "数据错误", "接收到无效的数据格式") return if new_data and "状态" in new_data[0] and new_data[0]["状态"] == "错误": error_msg = new_data[0].get("消息", "未知错误") QMessageBox.warning(self, "采集错误", error_msg) self.stop_collecting() return unique_data = self.remove_duplicates(new_data) # 保存到当前平台的数据 self.platform_data[self.current_platform] = unique_data # 更新表格 self.table.setSortingEnabled(False) self.table.setRowCount(len(unique_data)) flags = Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled for row, item in enumerate(unique_data): # 根据平台动态填充表格 if self.current_platform == "douyin": # 抖音数据处理 self.table.setItem(row, 0, QTableWidgetItem(str(item.get("序号", "")))) self.table.setItem(row, 1, QTableWidgetItem(item.get("作者昵称", ""))) self.table.setItem(row, 2, QTableWidgetItem(item.get("类型", ""))) video_url = item.get("视频地址", "") url_item = QTableWidgetItem(video_url) url_item.setForeground(QColor("#0000FF")) url_item.setToolTip(video_url) self.table.setItem(row, 3, url_item) self.table.setItem(row, 4, QTableWidgetItem(str(item.get("评论数量", 0)))) self.table.setItem(row, 5, QTableWidgetItem(item.get("发布时间", ""))) self.table.setItem(row, 6, QTableWidgetItem(item.get("视频ID", ""))) elif self.current_platform == "xiaohongshu": # 小红书数据处理 self.table.setItem(row, 0, QTableWidgetItem(str(item.get("序号", "")))) self.table.setItem(row, 1, QTableWidgetItem(item.get("作者昵称", ""))) self.table.setItem(row, 2, QTableWidgetItem(item.get("类型", ""))) note_url = item.get("笔记链接", "") url_item = QTableWidgetItem(note_url) url_item.setForeground(QColor("#0000FF")) url_item.setToolTip(note_url) self.table.setItem(row, 3, url_item) self.table.setItem(row, 4, QTableWidgetItem(str(item.get("点赞数", 0)))) self.table.setItem(row, 5, QTableWidgetItem(str(item.get("收藏数", 0)))) self.table.setItem(row, 6, QTableWidgetItem(item.get("发布时间", ""))) self.table.setItem(row, 7, QTableWidgetItem(item.get("笔记ID", ""))) # 添加新平台时在这里添加处理逻辑 self.table.setSortingEnabled(True) self.table.scrollToBottom() self.status_label.setText(f"已采集 {len(unique_data)} 条{self.current_platform}数据") self.status_label.setStyleSheet("color: #4CAF50; font-weight: bold;") def export_data(self): # 获取当前平台的数据 current_data = self.platform_data.get(self.current_platform, []) if not current_data: QMessageBox.warning(self, "导出失败", f"没有可导出的{self.current_platform}数据") return try: remark = self.remark_input.text().strip() platform_name = self.current_platform default_name = f"{platform_name}数据_账号{self.index + 1}_{remark}.xlsx" if remark else f"{platform_name}数据_账号{self.index + 1}.xlsx" filename, _ = QFileDialog.getSaveFileName( self, "导出数据", default_name, "Excel文件 (*.xlsx)" ) if not filename: return if not filename.endswith('.xlsx'): filename += '.xlsx' df = pd.DataFrame(current_data) df.to_excel(filename, index=False) self.export_btn.setStyleSheet(""" QPushButton { background-color: #0D47A1; color: white; padding: 8px 16px; border-radius: 5px; font-weight: bold; } """) QTimer.singleShot(500, self.restore_export_button_style) QMessageBox.information(self, "导出成功", f"数据已导出到: {filename}") except Exception as e: QMessageBox.critical(self, "导出错误", f"导出失败: {str(e)}") def restore_export_button_style(self): self.export_btn.setStyleSheet(""" QPushButton { background-color: #2196F3; color: white; padding: 8px 16px; border-radius: 5px; font-weight: bold; } QPushButton:hover { background-color: #1976D2; } QPushButton:pressed { background-color: #0D47A1; } """) def clear_table_data(self): # 获取当前平台的数据 current_data = self.platform_data.get(self.current_platform, []) if not current_data: QMessageBox.information(self, "提示", f"{self.current_platform}平台无数据") return reply = QMessageBox.question( self, "确认清空", f"确定要清空{self.current_platform}的表格数据吗? (共{len(current_data)}条)", QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No ) if reply == QMessageBox.StandardButton.Yes: self.platform_data[self.current_platform] = [] self.table.setRowCount(0) self.status_label.setText(f"{self.current_platform}数据已清空") def get_comments(self): """修改:处理多个关键字""" # 获取当前平台的数据 current_data = self.platform_data.get(self.current_platform, []) if not current_data: QMessageBox.warning(self, "操作失败", f"没有可用的{self.current_platform}数据") return # 获取关键字并分割 keyword_input = self.comment_keyword_input.text().strip() if keyword_input: # 使用 | 作为分隔符,支持中文逗号、英文逗号、空格 keywords = keyword_input.replace(',', ',').replace(' ', ',') keyword_filter = '|'.join([kw.strip() for kw in keywords.split(',') if kw.strip()]) else: keyword_filter = "" # 构建有效的视频数据 video_data = [] for idx, item in enumerate(current_data): try: # 根据平台获取不同的字段 if self.current_platform == "douyin": video_id = self.extract_douyin_video_id(item.get("视频地址", "")) comment_count = int(item.get("评论数量", 0)) video_url = item.get("视频地址", "") elif self.current_platform == "xiaohongshu": video_id = self.extract_xiaohongshu_note_id(item.get("笔记链接", "")) comment_count = int(item.get("评论数量", 0)) # 假设小红书也有评论数量字段 video_url = item.get("笔记链接", "") else: continue if video_id and comment_count > 0: video_data.append({ "序号": idx + 1, "视频地址": video_url, "视频ID": video_id, "评论数量": comment_count }) except (ValueError, TypeError, KeyError): continue if not video_data: QMessageBox.warning(self, "操作失败", "没有包含评论的视频数据") return try: # 获取当前账号的cookie cookie = self.cookie_input.text().strip() # 如果评论窗口已存在,先关闭它 if hasattr(self, 'comment_window') and self.comment_window: self.comment_window.close() self.comment_window = None self.comment_window = CommentWindow( parent=self, account_index=self.index, video_data=video_data, keyword_filter=keyword_filter, # 传递处理后的关键字 cookie=cookie, # 传递cookie use_proxy=False, # 默认不开启代理 account_keywords=keyword_filter, # 传递账号关键字 platform=self.current_platform # 传递当前平台 ) # 使用独立窗口模式 self.comment_window.setWindowFlag(Qt.WindowType.Window) self.comment_window.finished.connect(self.on_comment_window_closed) self.comment_window.show() except Exception as e: QMessageBox.critical(self, "错误", f"无法打开评论窗口: {str(e)}") def extract_douyin_video_id(self, video_url): """从抖音视频地址中提取视频ID""" # 示例URL: https://www.douyin.com/video/1234567890123456789 parts = video_url.split('/') if len(parts) >= 5: return parts[-1] # 返回最后一部分作为视频ID return "" def extract_xiaohongshu_note_id(self, note_url): """从小红书笔记地址中提取笔记ID""" # 示例URL: https://www.xiaohongshu.com/explore/1234567890abcdef12345678 parts = note_url.split('/') if len(parts) >= 5: return parts[-1] # 返回最后一部分作为笔记ID return "" def extract_video_id(self, video_url): """从视频地址中提取视频ID""" # 示例URL: https://www.douyin.com/video/1234567890123456789 parts = video_url.split('/') if len(parts) >= 5: return parts[-1] # 返回最后一部分作为视频ID return "" def on_comment_window_closed(self): # 安全地关闭评论窗口 if hasattr(self, 'comment_window') and self.comment_window: # 确保停止线程 if hasattr(self.comment_window, 'comment_thread') and self.comment_window.comment_thread.isRunning(): self.comment_window.comment_thread.stop() self.comment_window.comment_thread.quit() self.comment_window.comment_thread.wait(2000) self.comment_window = None def show_context_menu(self, position): menu = QMenu(self) selected_rows = set(item.row() for item in self.table.selectedItems()) if not selected_rows: return copy_row_action = menu.addAction("复制整行") copy_row_action.triggered.connect(lambda: self.copy_selected_row(selected_rows)) copy_cell_action = menu.addAction("复制单元格") copy_cell_action.triggered.connect(self.copy_selected_cell) menu.addSeparator() # 根据平台显示不同的复制选项 if self.current_platform == "douyin": copy_url_action = menu.addAction("复制视频地址") copy_url_action.triggered.connect(lambda: self.copy_selected_column(3)) copy_video_id_action = menu.addAction("复制视频ID") copy_video_id_action.triggered.connect(lambda: self.copy_selected_column(6)) elif self.current_platform == "xiaohongshu": copy_url_action = menu.addAction("复制笔记链接") copy_url_action.triggered.connect(lambda: self.copy_selected_column(3)) copy_note_id_action = menu.addAction("复制笔记ID") copy_note_id_action.triggered.connect(lambda: self.copy_selected_column(7)) copy_author_action = menu.addAction("复制作者昵称") copy_author_action.triggered.connect(lambda: self.copy_selected_column(1)) menu.exec(self.table.viewport().mapToGlobal(position)) def copy_selected_row(self, rows): text = "" for row in sorted(rows): row_data = [] for col in range(self.table.columnCount()): item = self.table.item(row, col) if item: row_data.append(item.text()) text += "\t".join(row_data) + "\n" clipboard = QApplication.clipboard() clipboard.setText(text.strip()) def copy_selected_cell(self): selected_items = self.table.selectedItems() if not selected_items: return text = "\n".join(item.text() for item in selected_items) clipboard = QApplication.clipboard() clipboard.setText(text) def copy_selected_column(self, column): selected_items = [item for item in self.table.selectedItems() if item.column() == column] if not selected_items: return text = "\n".join(item.text() for item in selected_items) clipboard = QApplication.clipboard() clipboard.setText(text) def resizeEvent(self, event): super().resizeEvent(event) if self.table_container: self.overlay.setGeometry(0, 0, self.table_container.width(), self.table_container.height())和main_window.py的import pandas as pd from PyQt6.QtWidgets import ( QMainWindow, QWidget, QVBoxLayout, QLabel, QTabWidget, QHBoxLayout, QPushButton, QStatusBar, QStyle, QFileDialog, QMessageBox, QDialog, QFormLayout, QLineEdit, QComboBox, QCheckBox ) from PyQt6.QtGui import QFont from PyQt6.QtCore import Qt, QTimer from tanchen_v2.ui.account_widget import AccountWidget from tanchen_v2.core_v1.config_manager import ConfigManager class ProxyConfigDialog(QDialog): def __init__(self, config_manager, parent=None): super().__init__(parent) self.setWindowTitle("天启代理配置") self.setGeometry(200, 200, 500, 300) self.config_manager = config_manager layout = QVBoxLayout() layout.setContentsMargins(15, 15, 15, 15) layout.setSpacing(10) # 加载配置 self.config = self.config_manager.load_proxy_config() or {} form_layout = QFormLayout() form_layout.setSpacing(10) # 创建控件 self.secret_edit = QLineEdit() self.secret_edit.setText(self.config.get("secret", "")) self.type_combo = QComboBox() self.type_combo.addItems(["json", "txt"]) if "type" in self.config: self.type_combo.setCurrentText(self.config["type"]) else: self.type_combo.setCurrentText("json") self.time_combo = QComboBox() self.time_combo.addItems(["3", "5", "10", "15"]) if "time" in self.config: self.time_combo.setCurrentText(self.config["time"]) else: self.time_combo.setCurrentText("5") self.mr_check = QCheckBox("IP去重") self.mr_check.setChecked(self.config.get("mr", "1") == "1") self.sign_edit = QLineEdit() self.sign_edit.setText(self.config.get("sign", "")) # 添加表单行 form_layout.addRow("提取秘钥 (secret):", self.secret_edit) form_layout.addRow("返回类型 (type):", self.type_combo) form_layout.addRow("IP使用时长 (time):", self.time_combo) form_layout.addRow("", self.mr_check) # 单独一行显示复选框 form_layout.addRow("用户签名 (sign):", self.sign_edit) layout.addLayout(form_layout) # 按钮 btn_layout = QHBoxLayout() save_btn = QPushButton("保存") save_btn.setStyleSheet(""" QPushButton { background-color: #4CAF50; color: white; padding: 8px 16px; border-radius: 4px; } QPushButton:hover { background-color: #45a049; } """) save_btn.clicked.connect(self.save_config) cancel_btn = QPushButton("取消") cancel_btn.setStyleSheet(""" QPushButton { background-color: #f44336; color: white; padding: 8px 16px; border-radius: 4px; } QPushButton:hover { background-color: #d32f2f; } """) cancel_btn.clicked.connect(self.reject) btn_layout.addStretch() btn_layout.addWidget(save_btn) btn_layout.addWidget(cancel_btn) btn_layout.addStretch() layout.addLayout(btn_layout) self.setLayout(layout) def save_config(self): self.config = { "secret": self.secret_edit.text(), "type": self.type_combo.currentText(), "time": self.time_combo.currentText(), "mr": "1" if self.mr_check.isChecked() else "0", "sign": self.sign_edit.text() } self.config_manager.save_proxy_config(self.config) self.accept() class DouyinDataCollector(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("多平台数据采集工具") self.setGeometry(100, 100, 1400, 800) self.setStyleSheet(""" QMainWindow { background-color: #f5f5f5; } QTabWidget::pane { border: 1px solid #e0e0e0; background: white; } QTabBar::tab { background: #e0e0e0; border: 1px solid #e0e0e0; padding: 8px 16px; border-top-left-radius: 4px; border-top-right-radius: 4px; margin-right: 2px; } QTabBar::tab:selected { background: white; border-bottom: none; } QTabBar::tab:!selected { margin-top: 4px; } """) self.accounts = [] self.config_manager = ConfigManager() self.current_platform = "douyin" self.init_ui() def init_ui(self): main_widget = QWidget() main_layout = QVBoxLayout() main_layout.setContentsMargins(15, 15, 15, 15) main_layout.setSpacing(15) # 标题 title_label = QLabel("多平台数据采集系统") title_label.setFont(QFont("Arial", 18, QFont.Weight.Bold)) title_label.setAlignment(Qt.AlignmentFlag.AlignCenter) title_label.setStyleSheet(""" QLabel { color: #2196F3; padding: 10px; background-color: white; border-radius: 8px; border: 1px solid #e0e0e0; } """) main_layout.addWidget(title_label) ####################### # 平台选择和代理配置按钮 top_control_layout = QHBoxLayout() # 平台选择器 platform_layout = QHBoxLayout() platform_layout.addWidget(QLabel("选择平台:")) self.platform_combo = QComboBox() self.platform_combo.addItem("抖音", "douyin") self.platform_combo.addItem("小红书", "xiaohongshu") self.platform_combo.currentIndexChanged.connect(self.switch_platform) platform_layout.addWidget(self.platform_combo) top_control_layout.addLayout(platform_layout) # 代理配置按钮 top_control_layout.addStretch() self.proxy_config_btn = self.create_button( "天启代理配置", "#FF9800", "#F57C00", "#E65100", QStyle.StandardPixmap.SP_ComputerIcon) self.proxy_config_btn.clicked.connect(self.show_proxy_config) top_control_layout.addWidget(self.proxy_config_btn) main_layout.addLayout(top_control_layout) # 账号标签页 self.tabs = QTabWidget() self.tabs.setTabPosition(QTabWidget.TabPosition.North) self.tabs.setDocumentMode(True) for i in range(6): account_widget = AccountWidget(i, self.config_manager, self.current_platform) self.accounts.append(account_widget) tab_name = self.get_tab_name(i) # 添加平台参数 self.tabs.addTab(account_widget, tab_name) self.tabs.currentChanged.connect(self.update_tab_names) main_layout.addWidget(self.tabs, 1) # 状态栏 self.status_bar = self.statusBar() self.status_bar.setStyleSheet("background-color: #e0e0e0; color: #666; padding: 5px;") self.status_bar.showMessage("就绪 | 数据采集工具 v1.1 | 配置已自动保存") main_widget.setLayout(main_layout) self.setCentralWidget(main_widget) def switch_platform(self): """切换平台时的处理""" new_platform = self.platform_combo.currentData() self.current_platform = new_platform # 更新所有账号的平台 for account in self.accounts: account.switch_platform(new_platform) self.status_bar.showMessage(f"已切换到{self.platform_combo.currentText()}平台") def create_button(self, text, bg_color, hover_color, pressed_color, icon): button = QPushButton(text) button.setIcon(self.style().standardIcon(icon)) button.setStyleSheet(f""" QPushButton {{ background-color: {bg_color}; color: white; padding: 10px 20px; border-radius: 6px; font-weight: bold; font-size: 14px; }} QPushButton:hover {{ background-color: {hover_color}; }} QPushButton:pressed {{ background-color: {pressed_color}; }} """) # 存储基础颜色用于动画 button.setProperty("base_color", bg_color) return button def get_tab_name(self, index): config = self.config_manager.load_account_config(index,self.current_platform) tab_name = f"账号 {index + 1}" if config and config.get("remark"): tab_name = f"{tab_name}: {config['remark']}" return tab_name def update_tab_names(self): for i in range(self.tabs.count()): self.tabs.setTabText(i, self.get_tab_name(i)) def show_proxy_config(self): try: dialog = ProxyConfigDialog(self.config_manager, self) dialog.setWindowModality(Qt.WindowModality.ApplicationModal) if dialog.exec() == QDialog.DialogCode.Accepted: self.status_bar.showMessage("代理配置已保存") self.animate_button(self.proxy_config_btn, "#E65100") except Exception as e: QMessageBox.critical(self, "错误", f"打开代理配置时出错: {str(e)}") def animate_button(self, button, color): original_style = button.styleSheet() button.setStyleSheet(original_style.replace( f"background-color: {button.property('base_color')}", f"background-color: {color}") ) QTimer.singleShot(500, lambda: button.setStyleSheet(original_style))

08-Sep-2025 13:35:44.453 SEVERE [http-nio-8080-exec-15] org.apache.catalina.core.StandardContext.startInternal Context [/mesFERROTEC] startup failed due to previous errors 08-Sep-2025 13:35:44.976 WARNING [http-nio-8080-exec-15] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [mesFERROTEC] registered the JDBC driver [com.mysql.cj.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 08-Sep-2025 13:35:44.978 WARNING [http-nio-8080-exec-15] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [mesFERROTEC] appears to have started a thread named [mysql-cj-abandoned-connection-cleanup] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:85) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) java.lang.Thread.run(Thread.java:748) 08-Sep-2025 13:35:44.979 WARNING [http-nio-8080-exec-15] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [mesFERROTEC] appears to have started a thread named [pool-21-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) java.lang.Thread.run(Thread.java:748) 08-Sep-2025 13:35:44.986 INFO [http-nio-8080-exec-15] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/mesFERROTEC.war] has finished in [109,199] ms 08-Sep-2025 13:35:47.008 INFO [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access. java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access. at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1378) at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1030) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:117) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:84) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include #define PORT 80 // 服务监听端口 #define BUFFER_SIZE 1024 // 缓冲区大小 #define MAX_THREADS 100 // 最大线程数 /** * 客户端请求处理函数 * @param arg 客户端socket指针 * @return NULL */ void *handle_client(void *arg) { int client_socket = *(int *)arg; char buffer[BUFFER_SIZE] = {0}; char response[BUFFER_SIZE * 2] = {0}; // 读取客户端请求 ssize_t bytes_read = read(client_socket, buffer, BUFFER_SIZE); if (bytes_read < 0) { perror("read failed"); close(client_socket); return NULL; } // 解析HTTP请求行:方法、路径、协议版本 char method[10], path[100], protocol[10]; sscanf(buffer, "%s %s %s", method, path, protocol); printf("Received %s request for %s\n", method, path); // 处理GET请求 if (strcmp(method, "GET") == 0) { // 默认返回Index.html if (strcmp(path, "/") == 0) { strcpy(path, "/Index.html"); } // 构造文件路径(从web文件夹读取) char file_path[150] = {0}; // 直接映射到web目录下 strcpy(file_path, "./web"); strcat(file_path, path); // 根据文件扩展名设置Content-Type char *content_type = "text/html"; if (strstr(path, ".css")) content_type = "text/css"; else if (strstr(path, ".js")) content_type = "application/javascript"; else if (strstr(path, ".jpg") || strstr(path, ".jpeg")) content_type = "image/jpeg"; else if (strstr(path, ".png")) content_type = "image/png"; else if (strstr(path, ".json")) content_type = "application/json"; // 打开并读取文件(二进制模式) FILE *file = fopen(file_path, "rb"); if (file) { fseek(file, 0, SEEK_END); long file_size = ftell(file); fseek(file, 0, SEEK_SET); // 分配内存并读取文件内容 char *file_content = malloc(file_size + 1); fread(file_content, 1, file_size, file); fclose(file); // 构造HTTP 200 OK响应头 sprintf(response, "HTTP/1.1 200 OK\r\n" "Content-Type: %s\r\n" "Content-Length: %ld\r\n" "\r\n", content_type, file_size); // 单独发送头部和内容(避免二进制文件被截断) write(client_socket, response, strlen(response)); write(client_socket, file_content, file_size); free(file_content); } else { // 文件不存在,返回404 sprintf(response, "HTTP/1.1 404 Not Found\r\n" "Content-Type: text/html\r\n" "\r\n" "404 Not Found"); } } // 处理POST请求 else if (strcmp(method, "POST") == 0) { char *body = strstr(buffer, "\r\n\r\n"); if (body) { body += 4; // 跳过空行 printf("POST data: %s\n", body); // 构造HTTP 200 OK响应,回显POST数据 sprintf(response, "HTTP/1.1 200 OK\r\n" "Content-Type: text/html\r\n" "\r\n" "Received POST data: %s", body); } else { sprintf(response, "HTTP/1.1 200 OK\r\n" "Content-Type: text/html\r\n" "\r\n" "No POST data received"); } } // 不支持的请求方法 else { sprintf(response, "HTTP/1.1 501 Not Implemented\r\n" "Content-Type: text/html\r\n" "\r\n" "501 Not Implemented"); } // 发送响应给客户端 write(client_socket, response, strlen(response)); close(client_socket); return NULL; } int main() { int server_fd, client_socket; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); pthread_t threads[MAX_THREADS]; int thread_count = 0; // 创建socket文件描述符 if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); } // 设置socket选项,允许端口复用 if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt failed"); exit(EXIT_FAILURE); } // 配置服务器地址结构 address.sin_family = AF_INET; // IPv4地址族 address.sin_addr.s_addr = INADDR_ANY; // 监听所有网络接口 address.sin_port = htons(PORT); // 端口号转换为网络字节序 // 绑定socket到指定端口 if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } // 开始监听,设置最大连接队列为5 if (listen(server_fd, 5) < 0) { perror("listen failed"); exit(EXIT_FAILURE); } printf("Server started on port %d\n", PORT); // 主循环,持续接受客户端连接 while (1) { // 接受新连接 if ((client_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { perror("accept failed"); continue; // 继续等待下一个连接 } // 创建新线程处理客户端请求 if (thread_count < MAX_THREADS) { pthread_t thread_id; if (pthread_create(&thread_id, NULL, handle_client, &client_socket) != 0) { perror("pthread_create failed"); close(client_socket); } else { threads[thread_count++] = thread_id; pthread_detach(thread_id); // 分离线程,使其结束后自动释放资源 } } else { printf("Max threads reached, rejecting connection\n"); const char *busy_msg = "HTTP/1.1 503 Service Unavailable\r\n\r\n<span>503 Server Busy</span>"; write(client_socket, busy_msg, strlen(busy_msg)); close(client_socket); } } // 关闭服务器socket(实际上不会执行到这里) close(server_fd); return 0; }为什么会自动退出

Jun-2025 11:48:04.128 信息 [Thread-4] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8080"] 26-Jun-2025 11:48:04.184 信息 [Thread-4] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina] 26-Jun-2025 11:48:04.246 信息 [Thread-4] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8080"] 26-Jun-2025 11:48:04.251 信息 [Thread-4] org.apache.coyote.AbstractProtocol.destroy 正在摧毁协议处理器 ["http-nio-8080"] 26-Jun-2025 11:48:04.268 警告 [Thread-4] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [KuCun2] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 26-Jun-2025 11:48:04.276 警告 [Thread-4] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[KuCun2]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.base@11/java.lang.Object.wait(Native Method) java.base@11/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91) java.base@11/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) java.base@11/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) java.base@11/java.lang.Thread.run(Thread.java:834)]

Sep 1 00:16:38 p138-152-167 kernel: [37366824.474031] Call Trace: Sep 1 00:16:38 p138-152-167 kernel: [37366824.474035] <IRQ> Sep 1 00:16:38 p138-152-167 kernel: [37366824.474042] dump_stack+0x6d/0x88 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474043] nmi_cpu_backtrace.cold.8+0x30/0x65 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474047] ? lapic_can_unplug_cpu+0x80/0x80 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474051] nmi_trigger_cpumask_backtrace+0xf9/0x100 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474055] rcu_dump_cpu_stacks+0xae/0xdc Sep 1 00:16:38 p138-152-167 kernel: [37366824.474058] rcu_sched_clock_irq.cold.93+0x10c/0x368 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474062] ? timekeeping_advance+0x36f/0x590 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474065] ? tick_sched_do_timer+0x70/0x70 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474067] update_process_times+0x55/0x80 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474069] tick_sched_handle.isra.27+0x1f/0x60 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474071] tick_sched_timer+0x65/0x80 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474072] __hrtimer_run_queues+0xff/0x250 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474074] hrtimer_interrupt+0x100/0x210 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474077] __sysvec_apic_timer_interrupt+0x51/0xd0 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474080] sysvec_apic_timer_interrupt+0x2f/0x80 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474083] asm_sysvec_apic_timer_interrupt+0x12/0x20 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474087] RIP: 0010:dev_gro_receive+0x46f/0x620 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474089] Code: 0f b7 85 b6 00 00 00 48 01 c7 48 8b 07 48 33 06 48 89 c2 48 8b 47 06 48 33 46 06 48 09 d0 49 09 c4 e9 5c fd ff ff 48 8b 6a 20 <48> 8d 55 e0 48 81 fd e0 da 3a ab 0f 85 96 fd ff ff e9 42 fe ff ff Sep 1 00:16:38 p138-152-167 kernel: [37366824.474090] RSP: 0000:ffffbe0e80003d48 EFLAGS: 00000286 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474091] RAX: 0000000000000988 RBX: ffffa1669b51da00 RCX: 000000000000000e Sep 1 00:16:38 p138-152-167 kernel: [37366824.474092] RDX: ffffffffab3b12b0 RSI: ffffa1669b51da00 RDI: ffff9fe7bc743010 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474092] RBP: ffffffffab3b1320 R08: 0000000000000000 R09: ffff9fe82eb00000 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474093] R10: 000000000000007c R11: 000000000000000e R12: ffff9fe7bc742fd0 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474094] R13: 0000000000000000 R14: ffff9fe7bc742fd0 R15: 0000000000000000 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474098] napi_gro_receive+0x60/0x180 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474158] mlx5e_rep_tc_receive+0x59/0x270 [mlx5_core] Sep 1 00:16:38 p138-152-167 kernel: [37366824.474189] mlx5e_handle_rx_cqe_mpwrq_rep+0x14c/0x1e0 [mlx5_core] Sep 1 00:16:38 p138-152-167 kernel: [37366824.474215] mlx5e_poll_rx_cq+0x150/0xa20 [mlx5_core] Sep 1 00:16:38 p138-152-167 kernel: [37366824.474237] mlx5e_napi_poll+0xf0/0x610 [mlx5_core] Sep 1 00:16:38 p138-152-167 kernel: [37366824.474239] net_rx_action+0x149/0x3a0 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474240] __do_softirq+0xd6/0x299 Sep 1 00:16:38 p138-152-167 kernel: [37366824.474242] asm_call_irq_on_stack+0xf/0x20

程序 [csp] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:03.125 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [csp] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:03.126 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[csp]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745)] 30-Jun-2025 10:41:08.216 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.106 30-Jun-2025 10:41:08.218 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Jun 5 2025 19:02:30 UTC 30-Jun-2025 10:41:08.218 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 9.0.106.0 30-Jun-2025 10:41:08.218 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Linux 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 3.10.0-862.el7.x86_64 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: /usr/local/jdk/jre 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 1.8.0_44-b02 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.219 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=/home/csp/apache-tomcat-9.0.106/conf/logging.properties 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djdk.tls.ephemeralDHKeySize=2048 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dsun.io.useCanonCaches=false 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dignore.endorsed.dirs= 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=/home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=/home/csp/apache-tomcat-9.0.106 30-Jun-2025 10:41:08.220 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=/home/csp/apache-tomcat-9.0.106/temp 30-Jun-2025 10:41:08.221 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能 30-Jun-2025 10:41:08.401 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"] 30-Jun-2025 10:41:08.419 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[340]毫秒内初始化 30-Jun-2025 10:41:08.440 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina] 30-Jun-2025 10:41:08.440 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.106] 30-Jun-2025 10:41:08.453 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR 正在部署web应用程序存档文件[/home/csp/apache-tomcat-9.0.106/webapps/csp.war] 30-Jun-2025 10:41:12.531 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 10:41:12,573 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 10:41:12,573 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/classes/logback.xml] 10:41:12,574 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath. 10:41:12,574 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/lib/client-collect-api-0.3.28.0.jar!/logback.xml] 10:41:12,574 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/classes/logback.xml] 10:41:12,608 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 10:41:12,614 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 10:41:12,618 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE] 10:41:12,632 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - setting totalSizeCap to 200 GB 10:41:12,635 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - Archive files will be limited to [100 MB] each. 10:41:12,649 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - Will use gz compression 10:41:12,650 |-INFO in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@263577281 - Will use the pattern ./logs/csp-%d{yyyy-MM-dd}.%i.log.tar for the active file 10:41:12,655 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@3e81a56b - The date pattern is 'yyyy-MM-dd' from file name pattern './logs/csp-%d{yyyy-MM-dd}.%i.log.tar.gz'. 10:41:12,655 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@3e81a56b - Roll-over at midnight. 10:41:12,655 |-INFO in ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP@3e81a56b - Setting initial period to Thu Jun 26 15:58:50 CST 2025 10:41:12,657 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:41:12,672 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: ./logs/csp.log 10:41:12,672 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [./logs/csp.log] 10:41:12,673 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 10:41:12,675 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 10:41:12,675 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.springframework] to INFO 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [springfox.documentation] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.quartz] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.mybatis] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.pbccrc] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine] to DEBUG 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine.csp.validate.utils] to DEBUG 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine.csp.common.dao] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.sine.csp.serviceresult.dao] to ERROR 10:41:12,677 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 10:41:12,677 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 10:41:12,678 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 10:41:12,685 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@4bc614fc - Registering current configuration as safe fallback point . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _ | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.18) 2025-06-30 10:41:13.285 [background-preinit] INFO org.hibernate.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final 2025-06-30 10:41:13.307 [main] INFO com.sine.Application - Starting Application v1.0.35-SNAPSHOT using Java 1.8.0_44 on localhost with PID 92930 (/home/csp/apache-tomcat-9.0.106/webapps/csp/WEB-INF/classes started by root in /home/csp/apache-tomcat-9.0.106/bin) 2025-06-30 10:41:13.308 [main] DEBUG com.sine.Application - Running with Spring Boot v2.7.18, Spring v5.3.39 2025-06-30 10:41:13.308 [main] INFO com.sine.Application - The following 1 profile is active: "dev" 2025-06-30 10:41:14.873 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode 2025-06-30 10:41:14.877 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-06-30 10:41:14.945 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 51 ms. Found 0 Redis repository interfaces. 2025-06-30 10:41:15.963 [main] INFO org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 2629 ms 2025-06-30 10:41:16.575 [main] INFO org.springframework.boot.web.servlet.RegistrationBean - Filter xssFilter was not registered (possibly already registered?) 2025-06-30 10:41:17.892 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited 2025-06-30 10:41:20.438 [main] INFO org.springframework.scheduling.quartz.LocalDataSourceJobStore - Using db table-based data access locking (synchronization). 2025-06-30 10:41:20.439 [main] INFO org.springframework.scheduling.quartz.LocalDataSourceJobStore - JobStoreCMT initialized. 2025-06-30 10:41:21.526 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.528 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.531 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.829 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.839 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:21.843 [main] INFO org.springframework.aop.framework.CglibAopProxy - Unable to proxy interface-implementing method [public final void org.springframework.scheduling.quartz.QuartzJobBean.execute(org.quartz.JobExecutionContext) throws org.quartz.JobExecutionException] because it is marked as final: Consider using interface-based JDK proxies instead! 2025-06-30 10:41:22.696 [main] WARN org.thymeleaf.templatemode.TemplateMode - [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead. 2025-06-30 10:41:23.124 [main] INFO org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver - Exposing 0 endpoint(s) beneath base path '/actuator' 2025-06-30 10:41:23.164 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean - Starting Quartz Scheduler now 2025-06-30 10:41:24.144 [main] INFO com.sine.Application - Started Application in 11.303 seconds (JVM running for 16.22) 2025-06-30 10:41:24.458 [main] INFO org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener - Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-06-30 10:41:24.486 [main] ERROR org.springframework.boot.SpringApplication - Application run failed java.lang.IllegalStateException: Failed to execute ApplicationRunner at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:759) at org.springframework.boot.SpringApplication.lambda$callRunners$2(SpringApplication.java:746) at org.springframework.boot.SpringApplication$$Lambda$1079/1133797119.accept(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:744) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:155) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:97) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4491) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1013) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1861) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:817) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1579) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:412) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:739) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1689) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1597) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1383) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1366) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1093) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:421) at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:193) at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:211) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:191) at org.springframework.data.redis.core.RedisTemplate.keys(RedisTemplate.java:896) at com.sine.csp.common.boot.RedisCleanService.run(RedisCleanService.java:27) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:756) ... 56 common frames omitted Caused by: org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:109) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1595) ... 68 common frames omitted Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:330) at io.lettuce.core.RedisClient.connect(RedisClient.java:216) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider$$Lambda$1084/1822563181.get(Unknown Source) at java.util.Optional.orElseGet(Optional.java:267) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.lambda$null$0(LettucePoolingConnectionProvider.java:97) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider$$Lambda$1082/1664936139.get(Unknown Source) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:211) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:201) at org.apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.java:70) at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:571) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:298) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:223) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:122) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:117) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:103) ... 69 common frames omitted Caused by: io.lettuce.core.RedisCommandExecutionException: NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user> option can be used to authenticate the client and select the RESP protocol version at the same time at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147) at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116) at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120) at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111) at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:63) at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:747) at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:682) at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:599) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:745) 2025-06-30 10:41:24.514 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean - Shutting down Quartz Scheduler 2025-06-30 10:41:25.601 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ... 2025-06-30 10:41:25.616 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed 30-Jun-2025 10:41:25.621 严重 [main] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序 archive [/home/csp/apache-tomcat-9.0.106/webapps/csp.war] 时出错 java.lang.IllegalStateException: 启动子级时出错 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:602) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:603) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1013) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1861) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:817) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1579) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:721) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:76) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:211) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:412) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:874) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:739) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) Caused by: org.apache.catalina.LifecycleException: 无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/csp]] at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:406) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:179) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599) ... 37 more Caused by: java.lang.IllegalStateException: Failed to execute ApplicationRunner at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:759) at org.springframework.boot.SpringApplication.lambda$callRunners$2(SpringApplication.java:746) at org.springframework.boot.SpringApplication$$Lambda$1079/1133797119.accept(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:744) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:175) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:155) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:97) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4491) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ... 38 more Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1689) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1597) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1383) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1366) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:1093) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:421) at org.springframework.data.redis.core.RedisConnectionUtils.fetchConnection(RedisConnectionUtils.java:193) at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:144) at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:105) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:211) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:191) at org.springframework.data.redis.core.RedisTemplate.keys(RedisTemplate.java:896) at com.sine.csp.common.boot.RedisCleanService.run(RedisCleanService.java:27) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:756) ... 56 more Caused by: org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:109) at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1595) ... 68 more Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379 at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:330) at io.lettuce.core.RedisClient.connect(RedisClient.java:216) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider$$Lambda$1084/1822563181.get(Unknown Source) at java.util.Optional.orElseGet(Optional.java:267) at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.lambda$null$0(LettucePoolingConnectionProvider.java:97) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider$$Lambda$1082/1664936139.get(Unknown Source) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:211) at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:201) at org.apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.java:70) at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:571) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:298) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:223) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:122) at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:117) at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:103) ... 69 more Caused by: io.lettuce.core.RedisCommandExecutionException: NOAUTH HELLO must be called with the client already authenticated, otherwise the HELLO AUTH <user> option can be used to authenticate the client and select the RESP protocol version at the same time at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147) at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116) at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120) at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111) at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:63) at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:747) at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:682) at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:599) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509) at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:745) 30-Jun-2025 10:41:25.637 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR web应用程序存档文件[/home/csp/apache-tomcat-9.0.106/webapps/csp.war]的部署已在[17,181]ms内完成 30-Jun-2025 10:41:25.637 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/ROOT] 30-Jun-2025 10:41:25.659 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/ROOT]的部署已在[22]毫秒内完成 30-Jun-2025 10:41:25.659 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/docs] 30-Jun-2025 10:41:25.672 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/docs]的部署已在[12]毫秒内完成 30-Jun-2025 10:41:25.672 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/examples] 30-Jun-2025 10:41:25.770 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/examples]的部署已在[97]毫秒内完成 30-Jun-2025 10:41:25.770 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/host-manager] 30-Jun-2025 10:41:25.782 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/host-manager]的部署已在[12]毫秒内完成 30-Jun-2025 10:41:25.783 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/home/csp/apache-tomcat-9.0.106/webapps/manager] 30-Jun-2025 10:41:25.805 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/home/csp/apache-tomcat-9.0.106/webapps/manager]的部署已在[23]毫秒内完成 30-Jun-2025 10:41:25.809 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"] 30-Jun-2025 10:41:25.836 信息 [main] org.apache.catalina.startup.Catalina.start [17417]毫秒后服务器启动 30-Jun-2025 10:41:29.190 警告 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [csp] 注册了JDBC驱动程序 [com.alibaba.druid.proxy.DruidDriver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:29.191 警告 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [csp] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 30-Jun-2025 10:41:29.193 警告 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[csp]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[ java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745)] 30-Jun-2025 10:41:29.194 严重 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks web应用程序[csp]创建了一个ThreadLocal,其键类型为[org.springframework.boot.SpringBootExceptionHandler.LoggedExceptionHandlerThreadLocal](值为[org.springframework.boot.SpringBootExceptionHandler$LoggedExceptionHandlerThreadLocal@284f8fa0]),值类型为[org.springframework.boot.SpringBootExceptionHandler](值为[org.springframework.boot.SpringBootExceptionHandler@4a632f7c),但在停止web应用程序时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏 30-Jun-2025 10:41:29.194 严重 [http-nio-8080-exec-3] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks web应用程序[csp]创建了一个ThreadLocal,其键类型为[java.lang.ThreadLocal](值为[java.lang.ThreadLocal@40ba36e7]),值类型为[io.netty.util.internal.InternalThreadLocalMap](值为[io.netty.util.internal.InternalThreadLocalMap@6ad179a0),但在停止web应用程序时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏 30-Jun-2025 10:41:29.995 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。 at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1374) at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:997) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:123) at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:90) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 30-Jun-2025 10:41:32.509 信息 [http-nio-8080-exec-3] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。

java.lang.Exception: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Fault occurred while processing.</faultstring><detail><ns1:Exception xmlns:ns1="http://webservice.qms.hc.kmss.landray.com/"/></detail></soap:Fault></soap:Body></soap:Envelope> at com.definesys.deipaas.apiflow.runtime.framework.camel.core.to.SoapNettyHttpAfterProcessor.process(SoapNettyHttpAfterProcessor.java: 35) at sun.reflect.GeneratedMethodAccessor183.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43) at java.lang.reflect.Method.invoke(Method.java: 498) at org.apache.camel.support.ObjectHelper.invokeMethodSafe(ObjectHelper.java: 381) at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java: 494) at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java: 316) at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java: 286) at org.apache.camel.component.bean.AbstractBeanProcessor.process(AbstractBeanProcessor.java: 146) at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java: 83) at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java: 41) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java: 76) at com.definesys.deipaas.apiflow.runtime.framework.camel.core.LoopInterceptStrategy$LoopInterceptor.process(LoopInterceptStrategy.java: 46) at org.apache.camel.support.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java: 104) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java: 477) at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeFromQueue(DefaultReactiveExecutor.java: 224) at org.apache.camel.impl.engine.DefaultReactiveExecutor.executeFromQueue(DefaultReactiveExecutor.java: 82) at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.await(DefaultAsyncProcessorAwaitManager.java: 96) at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java: 85) at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java: 41) at com.definesys.deipaas.apiflow.runtime.framework.camel.core.LoopInterceptStrategy$LoopInterceptor.process(LoopInterceptStrategy.java: 46) at org.apache.camel.support.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java: 104) at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java: 477) at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java: 193) at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java: 64) at org.apache.camel.processor.Pipeline.process(Pipeline.java: 189) at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java: 398) at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java: 83) at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java: 41) at org.apache.camel.component.undertow.UndertowConsumer.handleRequest(UndertowConsumer.java: 270) at io.undertow.server.Connectors.executeRootHandler(Connectors.java: 393) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java: 852) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java: 35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java: 2019) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java: 1558) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java: 1449) at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java: 1282) at java.lang.Thread.run(Thread.java: 750)

最新推荐

recommend-type

【scratch3.0少儿编程-游戏原型-动画-项目源码】程序绘制长城.zip

资源说明: 1:本资料仅用作交流学习参考,请切勿用于商业用途。 2:一套精品实用scratch3.0少儿编程游戏、动画源码资源,无论是入门练手还是项目复用都超实用,省去重复开发时间,让开发少走弯路! 更多精品资源请访问 https://blog.csdn.net/ashyyyy/article/details/146464041
recommend-type

Docker环境下的弹性APM服务器搭建指南

根据提供的文件信息,我们可以梳理出以下几个关键知识点: 1. Docker技术概念: Docker是一个开源的应用容器引擎,允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何支持Docker的平台上。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iOS的app)。 2. Docker的使用优势: 使用Docker部署应用可以带来多方面的优势,如提高开发效率、简化部署流程、易于迁移和扩展、强化安全性和隔离性等。容器化应用可以在不同的环境中保持一致的运行状态,减少了"在我的机器上可以运行"这类问题。 3. Compose工具: Docker Compose是一个用来定义和运行多容器Docker应用程序的工具。通过Compose,用户可以使用YAML文件来配置应用程序服务,并通过一个命令,完成容器的创建和启动。Docker Compose使得复杂配置的多容器应用的部署和管理工作变得简单。 4. APM(应用性能管理)服务器: APM服务器是用来监控和管理软件应用性能的工具。它通常包括实时性能监控、问题诊断、性能瓶颈定位、用户体验报告等功能。通过提供深入的应用性能洞察,APM能够帮助开发者和运维人员优化和提升应用性能。 5. 弹性APM服务器: 在标题中提到的“弹性”可能是指APM服务器能够根据应用的性能需求自动调整资源分配。这种弹性服务器可以动态地根据负载情况增加或减少资源,以保证应用性能的稳定,并在必要时节省资源。 6. Docker和Compose在APM服务器部署中的作用: Docker和Compose共同作用于APM服务器的部署,意味着开发者可能通过定义一个Docker Compose文件来指定APM服务器的所有依赖和服务。利用容器化的方式,可以保证APM服务器在开发、测试和生产环境中的部署和运行一致性。 7. “docker-apm-master”文件结构: 文件名称列表中提及的“docker-apm-master”很可能是包含Dockerfile、docker-compose.yml等文件的目录名称,这个目录用于管理和构建弹性APM服务器的Docker镜像和服务。在该目录下,可能包含了用于构建APM服务器镜像的脚本、配置文件,以及用于部署和管理APM服务器的Docker Compose配置。 8. 开发和运维实践: 一个“由Docker和Compose支持的弹性apm服务器”项目体现了现代软件开发和运维的实践,即使用容器化和自动化工具来提升开发效率、简化运维工作以及优化应用部署。在微服务架构和云计算日益普及的今天,这类实践变得越来越普遍。 综合以上知识点,我们可以理解“docker-apm:由Docker和Compose支持的弹性apm服务器”是一个运用现代开发运维技术实践,提供应用性能管理解决方案的项目。它结合了Docker容器化技术和Docker Compose自动化管理工具,以实现一个可扩展、弹性的APM服务器,帮助开发者和运维团队高效地监控和优化应用性能。
recommend-type

游戏开发与部署全流程指南

# 游戏开发与部署全流程指南 ## 1. 开发整体游戏结构 ### 1.1 场景添加与游戏启动 要确保场景能被加载,需将其添加到构建设置中。若不添加,Unity 就无法知晓可用的场景。在之前的测试中,若只是重新加载当前场景,无需进行此操作;但现在若要切换关卡,就必须添加。添加完成后,可从启动场景点击“播放”来启动游戏,此时游戏管理器对象会在两个场景中共享。 不过需注意,由于管理器是在启动场景中加载的,所以必须始终从该场景启动游戏。若觉得每次手动打开启动场景麻烦,可使用此编辑器脚本,它能在点击“播放”时自动切换到指定场景:[https://github.com/jhocking/from-u
recommend-type

初级运维面试题

<think> 首先,用户的问题是:“我想查找初级运维面试题”,这是在查询初级运维岗位的面试题。系统指令要求我参考提供的引用内容,这些引用来自之前的消息。 回顾引用内容: - 引用[1]:是关于运维面试题的文章,提到“2024年9月最新运维高频面试题汇总(1)”,但它是个标题,没有具体题目内容。它宣传了一个群组。 - 引用[2]:是“云计算运维工程师面试题(二)”,列出了11个具体问题,涉及云计算、弹性伸缩、高可用性、安全等。这些不是专门针对初级的,但可能涵盖。 - 引用[3]:是“初级运维工程师面试题”,描述了一个场景:查杀病毒的过程,提到了一个可疑进程。这不是直接的面试题列表,而是
recommend-type

构建Ikiwiki的Docker容器:简易部署与使用

### 知识点概述 #### 标题:“docker-ikiwiki:Ikiwiki的Docker容器” - Docker:一种开源的容器化平台,用于自动化部署、扩展和管理应用程序。 - Ikiwiki:一个使用git作为后端的wiki引擎,其特色在于使用Markdown或Textile等标记语言编辑页面。 - 容器化部署:利用Docker技术进行软件的打包、分发和运行,以容器形式提供一致的运行环境。 #### 描述:“Ikiwiki Docker容器” - Docker映像与使用:介绍了如何通过命令行工具拉取并运行一个Ikiwiki的Docker镜像。 - 拉取Docker镜像:使用命令`docker pull ankitrgadiya/ikiwiki`从Docker Hub中获取预配置好的Ikiwiki容器镜像。 - 使用方式:提供了两种使用该Docker镜像的示例,一种是与域名绑定进行SSL支持的配置,另一种是作为独立运行且不支持SSL的配置。 - 独立映像的局限性:明确指出独立映像不支持SSL,因此推荐与Nginx-Proxy结合使用以获得更好的网络服务。 #### 标签:“docker ikiwiki Shell” - 标签汇总:这些标签提示了该文档内容涉及的技术范畴,即Docker容器技术、Ikiwiki应用以及Shell命令行操作。 - Docker标签:强调了Docker在自动化部署Ikiwiki中的应用。 - Ikiwiki标签:指出了本文内容与Ikiwiki的使用和配置相关。 - Shell标签:表明操作过程涉及到Linux Shell命令的执行。 #### 压缩包子文件的文件名称列表:“docker-ikiwiki-master” - 压缩包内容:该列表暗示了压缩包内包含的文件是以"docker-ikiwiki-master"为名称的主目录或项目文件。 - 文件结构:可能包含了Dockerfile、配置脚本、说明文档等文件,用于构建和运行Ikiwiki Docker容器。 ### 详细知识点 #### Docker容器技术 - Docker基础:Docker是一个开源的应用容器引擎,允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。 - 镜像与容器:在Docker中,镜像(Image)是一个可执行包,包含了运行应用程序所需的所有内容,例如代码、运行时、库、环境变量和配置文件。容器(Container)是从镜像创建的应用运行实例,可以进行启动、停止、删除等操作。每个容器都是相互隔离的,保证应用安全运行。 #### Ikiwiki的配置与部署 - Ikiwiki简介:Ikiwiki是一个用git作为后端的wiki引擎,它允许通过文本文件来编辑网页,支持Markdown、Textile等标记语言,使得内容的编写更加直观和方便。 - 部署要求:部署Ikiwiki通常需要一个web服务器和一些配置来处理HTTP请求。而通过Docker,用户可以快速部署一个预配置好的Ikiwiki环境。 - 配置方式:Docker运行命令中涉及到了多个参数的使用,如`--name`用于给容器命名,`-v`用于指定挂载卷,`-e`用于设置环境变量,`-p`用于端口映射,`-d`用于让容器在后台运行。 #### Docker命令行操作 - docker pull:从Docker Hub或用户指定的仓库拉取指定的镜像。 - docker run:创建一个新的容器并运行一个命令。这里提供了两种运行Ikiwiki的方式,一种是用于生产环境的,与域名绑定并支持SSL;另一种是用于开发或测试环境的,直接在80端口运行。 #### 网络代理和SSL支持 - SSL支持:SSL(Secure Sockets Layer)是一种安全协议,用于保障Web服务器和浏览器之间的通信安全。当容器配置为不支持SSL时,通常意味着不直接处理HTTPS请求。 - Nginx-Proxy:一个Docker镜像,用于运行一个Nginx服务器,充当SSL终止层,将SSL终止在Nginx代理中,然后将非加密的HTTP请求转发到后端的容器。这样可以利用Nginx强大的网络功能来处理HTTPS、HTTP/2等,增强系统的安全性和效率。 ### 总结 在介绍如何部署Ikiwiki wiki引擎到Docker容器的过程中,涉及到了Docker的基本概念、容器的创建和配置、Ikiwiki的运行机制以及Shell命令行的实用操作。文档也提到了在使用不支持SSL的独立容器时,推荐配合Nginx-Proxy来增强安全性和扩展性。这些知识点对于管理和维护Docker容器化的应用具有很高的实用价值。
recommend-type

Unity开发实用指南:快捷键、外部工具与模型创建

### Unity开发实用指南:快捷键、外部工具与模型创建 #### 1. Unity场景导航与键盘快捷键 在使用Unity进行开发时,一个三键鼠标会带来更好的操作体验,虽然Unity也支持单键或双键鼠标,但三键鼠标能让操作更加便捷,在Mac系统上同样适用。 除了使用鼠标进行导航操作外,键盘也能实现一些视图控制功能。当按住鼠标右键时,可以使用键盘上的W、A、S、D键像在第一人称游戏中一样移动视角。在进行其他操作时按住Shift键可以加快移动速度。 而在选择对象后按下F键,场景视图会自动平移和缩放以聚焦该对象。如果在场景导航中迷失方向,可以在层级面板中选择一个对象,将鼠标移到场景视图上(此
recommend-type

嵌入式 RELRO NX symbol

<think> 首先,用户的问题是:“我想了解嵌入式系统中RELRO、NX和symbol的相关知识 请问嵌入式系统中RELRO、NX和symbol的介绍”。这涉及到嵌入式系统中的安全特性:RELRO、NX和symbol。 回顾系统级指令: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾添加引用标识,如[^1]。 用户提到“参考站内引用”,但说明“上述引用仅供参考”,所以我不需要处理之前的引用,而是参考用户上一次的问题和我的回答。然而,用户的上一次问题是这
recommend-type

PXE TFTP OS-X环境下CoreOS网络引导设置指南

标题 "pxe-coreos:PXE tftp os-x设置" 中的知识点包括: 1. PXE(Preboot Execution Environment)技术:这是一种网络引导技术,允许计算机通过网络启动,而不需要依赖本地存储设备如硬盘驱动器。这对于部署无盘工作站、服务器或虚拟机非常有用。 2. TFTP(Trivial File Transfer Protocol)服务:是一种简单的文件传输协议,常用于局域网内小文件的快速传输。在PXE启动过程中,TFTP被用来从服务器下载启动文件,如操作系统内核和初始内存磁盘(initrd)。 3. CoreOS操作系统:是一个轻量级、容器优化的操作系统,适合大规模集群环境。它使用了docker等容器技术,并提供了系统更新和修复的自动化机制。 描述中提到的环境和设置步骤的知识点包括: 1. m0n0wall(pfsense)防火墙:这是一个基于开源BSD系统的防火墙和路由器解决方案,用于创建和管理网络。 2. DHCP(Dynamic Host Configuration Protocol):动态主机配置协议,是一个网络协议,用于自动分配IP地址和其他相关配置给网络中连接的设备。 3. OS-X Mac Mini:苹果公司生产的一款小型计算机,可用来作为服务器,执行PXE引导和TFTP服务。 4. 启用tftp服务器:在OS-X系统中,tftp服务可能需要手动启动。系统内置了tftp服务器软件,但默认未启动。通过修改配置文件来启动tftp服务是常见的管理任务。 5. 修改tftp.plist文件:这个文件是OS-X中控制tftp服务启动的配置文件。复制原始文件后,对其进行修改以启用tftp服务是设置PXE的重要步骤。 从描述内容来看,该文档旨在指导如何设置一个PXE环境,以便加载CoreOS操作系统到无盘设备或虚拟机。文档还提到了网络设置的重要性,包括防火墙、DHCP服务器和文件传输协议服务(TFTP)的配置。通过提供具体的配置步骤,文档帮助用户完成网络引导环境的搭建。 至于标签 "Shell",可能暗示文档中包含通过命令行或脚本的方式来设置和配置系统组件。在OS-X系统中,通常可以通过命令行工具来启动和配置TFTP服务。 最后,压缩包子文件的文件名称列表 "pxe-coreos-master" 表明这是一份包含PXE及CoreOS设置信息的项目或教程。名称中的 "master" 可能指这是一份主导或最终的文件集合,涉及到多个脚本和配置文件以实现完整的PXE环境搭建。 综上所述,该文件提供的信息涉及网络操作系统引导,PXE设置,TFTP服务的配置和启用,以及使用特定硬件和操作系统(Mac Mini与CoreOS)的具体步骤,这些知识点对于搭建一个网络操作系统部署环境至关重要。
recommend-type

Unity游戏音频:音效与音乐的实现

### Unity 游戏音频:音效与音乐的实现 在游戏开发中,图形往往吸引了大部分的注意力,但音频同样至关重要。大多数游戏都会播放背景音乐并使用音效,Unity 提供了强大的音频功能,让开发者可以将音效和音乐融入游戏中。它能导入和播放多种音频文件格式,调整音量,甚至处理场景中特定位置发出的声音。 #### 1. 整体规划 要为一个没有声音的游戏添加音频,可以按照以下步骤进行: 1. 导入音效的音频文件。 2. 播放敌人和射击的音效。 3. 编写音频管理器来控制音量。 4. 优化音乐的加载。 5. 单独控制音乐音量和音效音量,包括实现音轨的淡入淡出。 #### 2. 导入音效 在播放任何声
recommend-type

C语言所用软件

<think> 首先,用户的问题是:“我想查找C语言开发所用的软件 请问C语言开发使用的软件”。这是在询问C语言开发使用的软件,包括编译器、IDE等。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式,但这里是关于软件工具的,可能没有数学内容,所以不需要。 - 独立公式必须使用$$...$$格式,但同样,这里不需要。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1] 用户还提供了引用: - [^1]: 讨论了Visual Studio作为Windows平台的主要C/C++ IDE。 - [^2]: 汇