From owner-freebsd-stable@freebsd.org Fri Sep 6 17:51:54 2019 Return-Path: Delivered-To: freebsd-stable@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 77E30D1D32 for ; Fri, 6 Sep 2019 17:51:54 +0000 (UTC) (envelope-from stenn@nwtime.org) Received: from chessie.everett.org (chessie.everett.org [66.220.13.234]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 46Q4r74RYkz4fKD for ; Fri, 6 Sep 2019 17:51:51 +0000 (UTC) (envelope-from stenn@nwtime.org) Received: from [10.208.75.152] (75-139-194-196.dhcp.knwc.wa.charter.com [75.139.194.196]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by chessie.everett.org (Postfix) with ESMTPSA id 46Q4rv72QgzL7c; Fri, 6 Sep 2019 17:52:31 +0000 (UTC) Subject: Re: ntpd doesn't like ASLR on stable/12 post-r350672 To: Cy Schubert , =?UTF-8?Q?Trond_Endrest=c3=b8l?= Cc: freebsd-stable@freebsd.org References: <201909060639.x866dL68090189@slippy.cwsent.com> From: Harlan Stenn Openpgp: preference=signencrypt Autocrypt: addr=stenn@nwtime.org; prefer-encrypt=mutual; keydata= mQGNBFI2xmQBDACrPayw18eU4pIwCvKh7k0iMkAV9cvzs49kBppM+xoH+KKj4QWmkKELD39H ngQnT3RkKsTLlwxyLqPdUmeQNAY2M5fsOK+OF6EvwLPK9hbmE3Wx2moX+sbEUxJ2VzFhKSKb OPZALXwk1XxL0qBedz0xHYcDwaSAZZkEFXURv2pDIdrmnoUnq2gdC8GpoFJiXoUaCLSYzzaY ac4Njw7Mue8IqfzRQb70aMjXl/qmsmfmEVAyGXywDdc/ler4XSgiuYOV7Kf69bj9PFZZSMdJ MWgEyZH6lJ0TU5ccR2zp5ZRmWzQQkxJMyH2th7q0Nmz3aX4A0K4yE0Ba9/5Dr7ctpF15BrMF aEo4s5lwI6tUnkgMWo265mMzCz4mAPV/ac0w0OXQg7r9E2r0+dRapnzUlG43D0JLDqDr9uRR L6IrRQqoCWUC75lfmPYQYSlaTJaK68r3lXd0z1cXJUgVtEL5H3/Z71R2B20twcQVAnw2iIH6 L5vdrsIjHrMmkqRVbs9nNyEAEQEAAbQ5SGFybGFuIFN0ZW5uIChOZXR3b3JrIFRpbWUgRm91 bmRhdGlvbikgPHN0ZW5uQG53dGltZS5vcmc+iQG5BBMBAgAjBQJSNsblAhsvBwsJCAcDAgEG FQgCCQoLBBYCAwECHgECF4AACgkQyIwAt1pH+kBlzgv/QOg70vdj8wU/z97UPdlbxtN4THAB gfSX4N0VPKT5fjX1tFhuXZQAOv7wedR3Trh7TGteyg33TBAFf9A42mXZKi1IxAiQG118Hd8I 51rXwnugURIYQaIyQI+vbchRbwVyz+mVLTI/h6FdbsVzT4UFmir+ZMkb/XeZPu0HItk4OZHE 6hk+TuTiCnlqlCPLq371fXV54VOb91WZYD8EQFtK02QHGHsQqWvapdphiDVpYehmsPyiTESq NMKLVtjtyPkQ6S7QF3slSg+2q3j8lyxEA78Yl0MSFNU8B/BtKgzWP2itBOfi+rtUKg+jOY1V /s2uVk2kq2QmHJ/s5k5ldy3qVvoTpxvwBe0+EoBocTHYt+xxp0mTM6YY1xLiQpLznzluqg9z qtejX1gZOF4mgLiBIrhXzed3zsAazhTp5rNb1kn0brZFh6JC5Wk941eilnA4LqX8AWo0lmwo eb+mpwZK/5lNdage/anpVqft9wJ/8EcvST9TLUO4fPrmT3d/0LpWuQGNBFI2xmQBDADXLsBk I7CSa5UXlrNVFJQHER1VxRBKqjWWCh/8Qv9v3p3NrIc2UnhoZ1uWQ2voBGty5Xfy9k4afV5k WwDyRDUIb7PX+Tj4HjVVr7qvnOVe/0KzZpNq0Azd0ggFbsM+8mydktHIwJykW0NUsGwPRYuD OA0Lro0ohb5IiCt3sSQi1X1hYjo7O1Vmn8Gy/XYOnhnMux+5zDPO2yTkCNX5PocYi9IJJy6p Mq1yQV4Y2Dl8KtQzvtq55vCUxx6n0MMzFViGwNW6F4ge9ItO4tDScsgowDrHa208ehwOpv/i wjf93lCClQ6vaKmOBX872K/tdY/hwhxPPjgl1bcrOwMRYVemOPPehwnXH5bwclk1hvDQdkJQ 5pJOkE4VCryTF/iDAt4g2QnHocUwt3b6/ChUUWmj2GZ22OR12rbnCtLedwp0DpViKPUCQHBO vpgXdzE/L9zWar9fqM0EREMgfWbsJc9028qluCcFLIN1gYsq4cC+YGAcOu7HOI5orBBV4m9j XfsAEQEAAYkDPgQYAQIACQUCUjbGZAIbLgGpCRDIjAC3Wkf6QMDdIAQZAQIABgUCUjbGZAAK CRDfCQ/G52/8P/uWDACe7OEM+VETDRqjQgAwzX+RjCVPvtgrqc1SExS0fV7i1mUUxr/B8io3 Y1cRHFoFKmedxf8prHZq316Md5u4egjFdTT6ZqEqkK0hvv+i0pRpCa5EX9VIStcJStomZp8F cY34grA+EOWITaLQ4qNZUP7rf2e7gq1ubQTj7uLr6HZZvMZ5em+IvrOWEuWDI6yOiI6px04w RDfkoR2h6kgdw4V0PT4NjK9WYYKrVCf1bjLlVImNBEcXfvlUTrIYO8y6ptvoUsBQky5pQRvP 99Pn42WfyLy50aII6+vyudD4T0yLjXAz4KteUttxtIte64m/F9/7GEIZAxTUcLyOq/7bP4le h39jBckwc62iYzeK/VkU/bMMh2D68Z3QylMnhhcW27BcgQHPKsHhmFa2SNytYcuQiSdf9+pj 4i32ETz1nJAvYAAqgTF/0PL+8ZNQoEpe/n9woMKrlZrqD4EgFmhQ3bNVhlaXz1nuTZDrwPt1 yMxBuUNbCF4jFnaruwrSiGTRoIfUZQwAjQglahrV4/mcjfnvbNoseHX0PKd9q+wjg7MIjWqr f2CI8Fa6MdanqwYphz43I2yXANKFZuMWsWqyQYlvGuPUlUUcAL3stp24RkzDB1Q+JS0IZJST T2JSu0aTfUdWVNqr2UI19eX+zxbOTckSi3Ng14ezG8ZX194ZH10b8JzntQOwmA20pd5JDhug zQfASER+CZDiPPcQ4mvC4y7rMrfV6XGQbDynC3ekDxo8SC5SvjaczXMwXg6SZ8iFtEWmEwW9 r7zPjjIPDrX8w5LXBgxArM5o/HbERpc2EdAvMh1D7LC0SvmoE7fBKxsicVBe4h6vXjEZ+LLr /wuZiBld9OnxAUIpwptbBspO6WKTQYvgFH2OeDG27hiE5P4Xs4WSp5j9ez8OVB1iZnA2nCQ+ tNTjO8c+C/P92vPLx5+bpGRXTXMNaLh34PS3ZsYoUDkKZNhczRZUWJ7nynSbeeyF+QW7SLwA qY7O7dyk9LFTsfJqRQJ7tWnIAjJPCwmSgQ8Kl0UJ Message-ID: <9b0c95de-2d0e-89b4-32e6-63ec5af729b4@nwtime.org> Date: Fri, 6 Sep 2019 10:51:46 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <201909060639.x866dL68090189@slippy.cwsent.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 46Q4r74RYkz4fKD X-Spamd-Bar: ------- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=pass (policy=none) header.from=nwtime.org; spf=pass (mx1.freebsd.org: domain of stenn@nwtime.org designates 66.220.13.234 as permitted sender) smtp.mailfrom=stenn@nwtime.org X-Spamd-Result: default: False [-7.29 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; R_SPF_ALLOW(-0.20)[+mx]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(-3.50)[ip: (-9.54), ipnet: 66.220.0.0/19(-4.77), asn: 6939(-3.14), country: US(-0.05)]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; NEURAL_HAM_SHORT(-0.99)[-0.989,0]; DMARC_POLICY_ALLOW(-0.50)[nwtime.org,none]; RCVD_IN_DNSWL_NONE(0.00)[234.13.220.66.list.dnswl.org : 127.0.10.0]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:6939, ipnet:66.220.0.0/19, country:US]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_TLS_ALL(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Sep 2019 17:51:54 -0000 Hi folks, It's easy for us to customize the default value for DFLT_RLIMIT_STACK on a per-version and per-OS basis. We do this in the "configure" machinery. The defaults are expected to be "generally sane", and were likely chosen a relatively long time ago. What would you like the value(s) to be for what versions of FreeBSD? H On 9/5/2019 11:39 PM, Cy Schubert wrote: > In message inf > o>, =?UTF-8?Q?Trond_Endrest=C3=B8l?= writes: >> Hi, >> >> I'm running stable/12 with ASLR enabled in /etc/sysctl.conf: >> >> kern.elf64.aslr.enable=1 >> kern.elf64.aslr.pie_enable=1 >> kern.elf32.aslr.enable=1 >> kern.elf32.aslr.pie_enable=1 >> >> After upgrading to anything after r350672, now at r351450, ntpd >> refuses to start at boot. >> >> Aug 24 21:25:42 HOSTNAME ntpd[5618]: ntpd 4.2.8p12-a (1): Starti >> ng >> Aug 24 21:25:43 HOSTNAME kernel: [406] pid 5619 (ntpd), jid 0, ui >> d 123: exited on signal 11 >> >> Disabling ASLR, kern.elf64.aslr.enable=0, before starting ntpd >> manually is a workaround, but this is not viable in the long run. >> >> I tried changing command="/usr/sbin/${name}" to >> command="/usr/bin/proccontrol -m aslr -s disable /usr/sbin/${name}" in >> /etc/rc.d/ntpd, but that didn't go well. > > For now, until this can be solved, add this to your rc.conf: > > ntpd_prepend="/usr/bin/proccontrol -m aslr -s disable" > >> >> Running ntpd through gdb while ASLR was enabled, I narrowed it down to >> /usr/src/contrib/ntp/ntpd/ntpd.c:1001 >> >> ntp_rlimit(RLIMIT_STACK, DFLT_RLIMIT_STACK * 4096, 4096, "4k"); >> >> which calls /usr/src/contrib/ntp/ntpd/ntp_config.c:5211 and proceeds >> to /usr/src/contrib/ntp/ntpd/ntp_config.c:5254 >> >> if (-1 == getrlimit(RLIMIT_STACK, &rl)) { >> >> Single stepping from this point gave me: >> >> ==== >> >> (gdb) s >> _thr_rtld_set_flag (mask=1) at /usr/src/lib/libthr/thread/thr_rtld.c:171 >> 171 { >> (gdb) >> 176 return (0); >> (gdb) >> _thr_rtld_rlock_acquire (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_ >> rtld.c:115 >> 115 { >> (gdb) >> 120 curthread = _get_curthread(); >> (gdb) >> _get_curthread () at /usr/src/lib/libthr/arch/amd64/include/pthread_md.h:97 >> 97 return (TCB_GET64(tcb_thread)); >> (gdb) >> _thr_rtld_rlock_acquire (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_ >> rtld.c:121 >> 121 SAVE_ERRNO(); >> (gdb) >> 124 THR_CRITICAL_ENTER(curthread); >> (gdb) >> _thr_rwlock_tryrdlock (rwlock=, flags=0) at /usr/src/lib/libth >> r/thread/thr_umtx.h:192 >> 192 (rwlock->rw_flags & URWLOCK_PREFER_READER) != 0) >> (gdb) >> 191 if ((flags & URWLOCK_PREFER_READER) != 0 || >> (gdb) >> 197 while (!(state & wrflags)) { >> (gdb) >> 201 if (atomic_cmpset_acq_32(&rwlock->rw_state, state, st >> ate + 1)) >> (gdb) >> atomic_cmpset_int (dst=, expect=, src=1) at /us >> r/obj/usr/src/amd64.amd64/tmp/usr/include/machine/atomic.h:220 >> 220 ATOMIC_CMPSET(int); >> (gdb) >> _thr_rwlock_tryrdlock (rwlock=, flags=0) at /usr/src/lib/libth >> r/thread/thr_umtx.h:201 >> 201 if (atomic_cmpset_acq_32(&rwlock->rw_state, state, st >> ate + 1)) >> (gdb) >> _thr_rtld_rlock_acquire (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_ >> rtld.c:127 >> 127 curthread->rdlock_count++; >> (gdb) >> 128 RESTORE_ERRNO(); >> (gdb) >> 129 } >> (gdb) >> _thr_rtld_clr_flag (mask=1) at /usr/src/lib/libthr/thread/thr_rtld.c:181 >> 181 { >> (gdb) >> 182 return (0); >> (gdb) >> _thr_rtld_lock_release (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_r >> tld.c:150 >> 150 { >> (gdb) >> _get_curthread () at /usr/src/lib/libthr/arch/amd64/include/pthread_md.h:97 >> 97 return (TCB_GET64(tcb_thread)); >> (gdb) >> _thr_rtld_lock_release (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_r >> tld.c:157 >> 157 SAVE_ERRNO(); >> (gdb) >> 160 state = l->lock.rw_state; >> (gdb) >> 161 if (_thr_rwlock_unlock(&l->lock) == 0) { >> (gdb) >> _thr_rwlock_unlock (rwlock=0x80180d200) at /usr/src/lib/libthr/thread/thr_umt >> x.h:249 >> 249 state = rwlock->rw_state; >> (gdb) >> 250 if ((state & URWLOCK_WRITE_OWNER) != 0) { >> (gdb) >> 256 if (__predict_false(URWLOCK_READER_COUNT(stat >> e) == 0)) >> (gdb) >> 260 URWLOCK_READER_COUNT(state) == 1)) >> { >> (gdb) >> 259 URWLOCK_READ_WAITERS)) != 0 && >> (gdb) >> 262 state, state - 1)) >> (gdb) >> 261 if (atomic_cmpset_rel_32(&rwlock->rw_ >> state, >> (gdb) >> atomic_cmpset_int (dst=, expect=, src=0) at /us >> r/obj/usr/src/amd64.amd64/tmp/usr/include/machine/atomic.h:220 >> 220 ATOMIC_CMPSET(int); >> (gdb) >> _thr_rwlock_unlock (rwlock=0x80180d200) at /usr/src/lib/libthr/thread/thr_umt >> x.h:261 >> 261 if (atomic_cmpset_rel_32(&rwlock->rw_ >> state, >> (gdb) >> _thr_rtld_lock_release (lock=) at /usr/src/lib/libthr/thread/t >> hr_rtld.c:162 >> 162 if ((state & URWLOCK_WRITE_OWNER) == 0) >> (gdb) >> 163 curthread->rdlock_count--; >> (gdb) >> 164 THR_CRITICAL_LEAVE(curthread); >> (gdb) >> _thr_ast (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c:271 >> 271 if (!THR_IN_CRITICAL(curthread)) { >> (gdb) >> 272 check_deferred_signal(curthread); >> (gdb) >> check_deferred_signal (curthread=0x80864b000) at /usr/src/lib/libthr/thread/t >> hr_sig.c:332 >> 332 if (__predict_true(curthread->deferred_siginfo.si_signo == 0 >> || >> (gdb) >> 351 } >> (gdb) >> _thr_ast (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c:273 >> 273 check_suspend(curthread); >> (gdb) >> check_suspend (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c >> :358 >> 358 if (__predict_true((curthread->flags & >> (gdb) >> 401 } >> (gdb) >> _thr_ast (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c:274 >> 274 check_cancel(curthread, NULL); >> (gdb) >> check_cancel (curthread=0x80864b000, ucp=0x0) at /usr/src/lib/libthr/thread/t >> hr_sig.c:283 >> 283 if (__predict_true(!curthread->cancel_pending || >> (gdb) >> _thr_ast (curthread=) at /usr/src/lib/libthr/thread/thr_sig.c: >> 276 >> 276 } >> (gdb) >> _thr_rtld_lock_release (lock=) at /usr/src/lib/libthr/thread/t >> hr_rtld.c:166 >> 166 RESTORE_ERRNO(); >> (gdb) >> 167 } >> (gdb) >> getrlimit () at getrlimit.S:3 >> 3 RSYSCALL(getrlimit) >> (gdb) >> ntp_rlimit (rl_what=, rl_value=204800, rl_scale=>> , rl_sstr=) at /usr/src/contrib/ntp/ntpd/ntp_config.c:5257 >> 5257 if (rl_value > rl.rlim_max) { >> (gdb) >> 5264 rl.rlim_cur = rl_value; >> (gdb) >> 5265 if (-1 == setrlimit(RLIMIT_STACK, &rl)) { >> (gdb) >> _thr_rtld_set_flag (mask=1) at /usr/src/lib/libthr/thread/thr_rtld.c:171 >> 171 { >> (gdb) >> 176 return (0); >> (gdb) >> _thr_rtld_rlock_acquire (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_ >> rtld.c:115 >> 115 { >> (gdb) >> 120 curthread = _get_curthread(); >> (gdb) >> _get_curthread () at /usr/src/lib/libthr/arch/amd64/include/pthread_md.h:97 >> 97 return (TCB_GET64(tcb_thread)); >> (gdb) >> _thr_rtld_rlock_acquire (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_ >> rtld.c:121 >> 121 SAVE_ERRNO(); >> (gdb) >> 124 THR_CRITICAL_ENTER(curthread); >> (gdb) >> _thr_rwlock_tryrdlock (rwlock=, flags=0) at /usr/src/lib/libth >> r/thread/thr_umtx.h:192 >> 192 (rwlock->rw_flags & URWLOCK_PREFER_READER) != 0) >> (gdb) >> 191 if ((flags & URWLOCK_PREFER_READER) != 0 || >> (gdb) >> 197 while (!(state & wrflags)) { >> (gdb) >> 201 if (atomic_cmpset_acq_32(&rwlock->rw_state, state, st >> ate + 1)) >> (gdb) >> atomic_cmpset_int (dst=, expect=, src=1) at /us >> r/obj/usr/src/amd64.amd64/tmp/usr/include/machine/atomic.h:220 >> 220 ATOMIC_CMPSET(int); >> (gdb) >> _thr_rwlock_tryrdlock (rwlock=, flags=0) at /usr/src/lib/libth >> r/thread/thr_umtx.h:201 >> 201 if (atomic_cmpset_acq_32(&rwlock->rw_state, state, st >> ate + 1)) >> (gdb) >> _thr_rtld_rlock_acquire (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_ >> rtld.c:127 >> 127 curthread->rdlock_count++; >> (gdb) >> 128 RESTORE_ERRNO(); >> (gdb) >> 129 } >> (gdb) >> _thr_rtld_clr_flag (mask=1) at /usr/src/lib/libthr/thread/thr_rtld.c:181 >> 181 { >> (gdb) >> 182 return (0); >> (gdb) >> _thr_rtld_lock_release (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_r >> tld.c:150 >> 150 { >> (gdb) >> _get_curthread () at /usr/src/lib/libthr/arch/amd64/include/pthread_md.h:97 >> 97 return (TCB_GET64(tcb_thread)); >> (gdb) >> _thr_rtld_lock_release (lock=0x80180d200) at /usr/src/lib/libthr/thread/thr_r >> tld.c:157 >> 157 SAVE_ERRNO(); >> (gdb) >> 160 state = l->lock.rw_state; >> (gdb) >> 161 if (_thr_rwlock_unlock(&l->lock) == 0) { >> (gdb) >> _thr_rwlock_unlock (rwlock=0x80180d200) at /usr/src/lib/libthr/thread/thr_umt >> x.h:249 >> 249 state = rwlock->rw_state; >> (gdb) >> 250 if ((state & URWLOCK_WRITE_OWNER) != 0) { >> (gdb) >> 256 if (__predict_false(URWLOCK_READER_COUNT(stat >> e) == 0)) >> (gdb) >> 260 URWLOCK_READER_COUNT(state) == 1)) { >> (gdb) >> 259 URWLOCK_READ_WAITERS)) != 0 && >> (gdb) >> 262 state, state - 1)) >> (gdb) >> 261 if (atomic_cmpset_rel_32(&rwlock->rw_ >> state, >> (gdb) >> atomic_cmpset_int (dst=, expect=, src=0) at /us >> r/obj/usr/src/amd64.amd64/tmp/usr/include/machine/atomic.h:220 >> 220 ATOMIC_CMPSET(int); >> (gdb) >> _thr_rwlock_unlock (rwlock=0x80180d200) at /usr/src/lib/libthr/thread/thr_umt >> x.h:261 >> 261 if (atomic_cmpset_rel_32(&rwlock->rw_ >> state, >> (gdb) >> _thr_rtld_lock_release (lock=) at /usr/src/lib/libthr/thread/t >> hr_rtld.c:162 >> 162 if ((state & URWLOCK_WRITE_OWNER) == 0) >> (gdb) >> 163 curthread->rdlock_count--; >> (gdb) >> 164 THR_CRITICAL_LEAVE(curthread); >> (gdb) >> _thr_ast (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c:271 >> 271 if (!THR_IN_CRITICAL(curthread)) { >> (gdb) >> 272 check_deferred_signal(curthread); >> (gdb) >> check_deferred_signal (curthread=0x80864b000) at /usr/src/lib/libthr/thread/t >> hr_sig.c:332 >> 332 if >> (__predict_true(curthread->deferred_siginfo.si_signo == 0 || >> (gdb) >> 351 } >> (gdb) >> _thr_ast (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c:273 >> 273 check_suspend(curthread); >> (gdb) >> check_suspend (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c >> :358 >> 358 if (__predict_true((curthread->flags & >> (gdb) >> 401 } >> (gdb) >> _thr_ast (curthread=0x80864b000) at /usr/src/lib/libthr/thread/thr_sig.c:274 >> 274 check_cancel(curthread, NULL); >> (gdb) >> check_cancel (curthread=0x80864b000, ucp=0x0) at /usr/src/lib/libthr/thread/t >> hr_sig.c:283 >> 283 if (__predict_true(!curthread->cancel_pending || >> (gdb) >> _thr_ast (curthread=) at /usr/src/lib/libthr/thread/thr_sig.c: >> 276 >> 276 } >> (gdb) >> _thr_rtld_lock_release (lock=) at /usr/src/lib/libthr/thread/t >> hr_rtld.c:166 >> 166 RESTORE_ERRNO(); >> (gdb) >> 167 } >> (gdb) >> setrlimit () at setrlimit.S:3 >> 3 RSYSCALL(setrlimit) >> (gdb) >> >> Program received signal SIGSEGV, Segmentation fault. >> setrlimit () at setrlimit.S:3 >> 3 RSYSCALL(setrlimit) >> (gdb) >> >> Program terminated with signal SIGSEGV, Segmentation fault. >> The program no longer exists. >> (gdb) q >> >> ==== >> >> I'm sorry for the long post. Is there anything (else) I can do to >> further narrow it down? > > I've been able to confirm that kib@'s hunch regarding the gap is correct. > > Use the workaround until this can be solved. > > -- Harlan Stenn http://networktimefoundation.org - be a member!