unix系统调用getenv() 出core

问题描述

unix系统调用getenv() 出core

在获取当地时间时, localtime调用到getenv函数出现core,,不是第一次调用的时候, 是在连续很快的调用情况下会出现core。 大家帮忙看看什么原因。

代码如下:

struct tm* ts;
ts = localtime(&now.tv_sec);
if (ts == NULL)
{
    printf("localtime : %d, %sn", errno, strerror(errno));
    return ;
}

core 信息如下:

Program terminated with signal 11, Segmentation fault.
SEGV_MAPERR - Address not mapped to object
#0 0xc000000000338420:0 in getenv+0x1160 () from /usr/lib/hpux64/libc.so.1
(gdb) where
#0 0xc000000000338420:0 in getenv+0x1160 () from /usr/lib/hpux64/libc.so.1
#1 0xc000000000333a50:0 in tzset+0x110 () from /usr/lib/hpux64/libc.so.1
#2 0xc000000000330510:0 in localtime_r+0x120 () from /usr/lib/hpux64/libc.so.1
#3 0xc0000000003301d0:0 in localtime+0x30 () from /usr/lib/hpux64/libc.so.1

时间: 2024-09-08 12:54:04

unix系统调用getenv() 出core的相关文章

多线程-linux 下c 程序,开了1024个线程 依次等待共同完成某个任务,程序异常退出,不出core

问题描述 linux 下c 程序,开了1024个线程 依次等待共同完成某个任务,程序异常退出,不出core 程序简单来说类似一个多线程下载器,开了1024个线程,然后并发去服务器读取一个大文件的某一块,读取完成后,文件合并要按照顺序写文件,所以我采用了pthread_join依次等待上一个线程写完成操作.测试时候发现程序偶尔会突然down掉,也不出core,并不是总down,也会有成功执行时候.机器配制足够高了,内存96G,24核cpu...希望大家帮忙分析下..谢谢,代码逻辑如下. void*

Oracle服务端和客户端版本补丁不一致造成Tuxedo应用程序出core案例

这是一个CU**系统调用的查询天气预报的Tuxedo服务,Oracle Pro*C程序,连接的是Oracle 10.2.0.4库,出现问题的现象是不定时的产生core,服务down,触发Tuxedo服务的自动重启机制,但一般MAXGEN配置是100,即1天内若重启100次后服务就不会自动重启了,只能人工干预,每次重启后会好一阵,且该服务已经由被同步调用改为异步调用,因此实际业务上影响不大,只是几乎每天都会有自动重启的报警. 查看产生的core文件,如下是其堆栈信息, 根据提示的应用程序行,找到应

《UNIX环境高级编程(第3版)》——1.11 系统调用和库函数

1.11 系统调用和库函数 所有的操作系统都提供多种服务的入口点,由此程序向内核请求服务.各种版本的UNIX实现都提供良好定义.数量有限.直接进入内核的入口点,这些入口点被称为系统调用(system call,见图1-1).Research UNIX系统第7版提供了约50个系统调用,4.4BSD提供了约110个系统调用,而SVR4则提供了约120个系统调用.具体数字在不同操作系统版本中会不同,新近的大多数系统大大增加了支持的系统调用的个数.Linux 3.2.0提供了380个系统调用,FreeB

Linux系统调用详解(实现机制分析)--linux内核剖析(六)

系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制.也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call).在linux中系统调用是用户空间访问内核的唯一手段,除异常和陷入外,他们是内核唯一的合法入口. 一般情况下应用程序通过应用编程接口API,而不是直接通过系统调用来编程.在Unix世界,最流行的API

Core dump 分析

本文参考互联网文 Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core进程的内存空间越大,此过程可能持续很长一段时间(例如当进程占用60G+以上内存时,完整Core文件需要15分钟才能完全写到磁盘上),这期间产生的流量损失,不可估量. 凡事皆有两面性,OS在出Core的同时,虽然会终止掉当前进程,但是也会保留下第一手的现场数据,OS仿佛是一架被按下快

Linux下core文件产生的一些注意问题

前面转载了一篇文章关于core文件的产生和调试使用的设置,但在使用有一些需要注意的问题,如 在什么情况 才会正确地产生core文件. 列出一些常见问题: 一,如何使用core文件 1. 使用core文件 在core文件所在目录下键入: gdb -c core 它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等. 如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试: gdb -c

PHP stream未能及时清理现场导致Core的bug

  同事发现一个在使用set_error_handler的时候, 能100%重现的core, 提炼后的重现代码如下(环境必须不能访问internet):   <?php function err_handler(){ exit; return true; } set_error_handler('err_handler'); $client = file_get_contents("http://www.laruence.com/ServiceNoWse.asmx?WSDL");

Linux系统调用及用户编程接口(API)学习

Linux系统调用 系统调用指操作系统提供给用户程序调用的一组"特殊"接口,用户程序可以通过 这组"特殊"接口来获得操作系统内核提供的服务. 为什么用户程序不能直接访问系统内核提供的服 务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为用户空间和内核空间(也就是 常称的用户态和内核态),它们分别运行在不同的级别上,逻辑上是相互分离的.因此,用户进程通常情况下 不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间

《Linux/UNIX系统编程手册(上、下册)》——1.3 标准化

1.3 标准化 20世纪80年代末,可用的UNIX实现层出不穷,由此也带来了种种弊端.有些UNIX实现基于BSD,而另一些则基于System V,还有一些则是对两大"流派""兼容并蓄".更有甚者,每个厂商都在自己的UNIX实现中添加了额外特性.其结果是将软件及技术人员在不同UNIX实现间转移就变得异常困难.这一形式有力地推动了C语言和UNIX系统的标准化进程,使得应用程序能够在不同操作系统间很方便地进行移植.接下来,将介绍由此而产生的各种标准. 1.3.1 C编程语