1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00
Commit graph

58 commits

Author SHA1 Message Date
Winlin
8f48a0e2d1
ASAN: Support coroutine context switching and stack tracing (#4153)
For coroutine, we should use `__sanitizer_start_switch_fiber` which
similar to`VALGRIND_STACK_REGISTER`, see
https://github.com/google/sanitizers/issues/189#issuecomment-1346243598
for details. If not fix this, asan will output warning:

```
==72269==WARNING: ASan is ignoring requested __asan_handle_no_return: stack type: default top: 0x00016f638000; bottom 0x000106bec000; size: 0x000068a4c000 (1755627520)
False positive error reports may follow
For details see https://github.com/google/sanitizers/issues/189
```

It will cause asan failed to get the stack, see
`research/st/asan-switch.cpp` for example:

```
==71611==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x000103600733 at pc 0x0001009d3d7c bp 0x000100b4bd40 sp 0x000100b4bd38
WRITE of size 1 at 0x000103600733 thread T0
    #0 0x1009d3d78 in foo(void*) asan-switch.cpp:13
```

After fix this issue, it should provide the full stack when crashing:

```
==73437==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x000103300733 at pc 0x000100693d7c bp 0x00016f76f550 sp 0x00016f76f548
WRITE of size 1 at 0x000103300733 thread T0
    #0 0x100693d78 in foo(void*) asan-switch.cpp:13
    #1 0x100693df4 in main asan-switch.cpp:23
    #2 0x195aa20dc  (<unknown module>)
```

For primordial coroutine, if not set the stack by
`st_set_primordial_stack`, then the stack is NULL and asan can't get the
stack tracing. Note that it's optional and only make it fail to display
the stack information, no other errors.

---

Co-authored-by: john <hondaxiao@tencent.com>
2024-08-22 17:12:39 +08:00
Winlin
ff6a608099
ST: Replace macros with explicit code for better understanding. v7.0.7 (#4149)
Improvements for ST(State Threads):

1. ST: Use g++ for CXX compiler.
2. ST: Remove macros for clist.
3. ST: Remove macros for global thread and vp.
4. ST: Remove macros for vp queue operations.
5. ST: Remove macros for context switch.
6. ST: Remove macros for setjmp/longjmp.
7. ST: Remove macro for stack pad.
8. ST: Refine macro for valgrind.

---------

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-08-22 11:28:25 +08:00
Winlin
7ab012c60f
SmartPtr: Support detect memory leak by valgrind. v6.0.132 (#4102)
1. Support detect memory leak by valgrind.
2. Free the http handler entry.
3. Free the stack of ST.

---

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-06-29 11:16:32 +08:00
Winlin
ff91757a3a
ST: Research adds examples that demos pthread and helloworld. v6.0.118 (#3989)
1. `trunk/research/st/exceptions.cpp` About exceptions with ST, works
well on linux and mac, not work on cygwin.
2. `trunk/research/st/pthreads.cpp` About pthreads with ST, works well
on all platforms.
3. `trunk/research/st/hello.cpp` Hello world, without ST, works well on
all platforms.
4. `trunk/research/st/hello-world.cpp` Hello world, with ST, works well
on all platforms.
5. `trunk/research/st/hello-st.cpp` A very simple version for hello
world with ST, works well on all platforms.
2024-03-24 09:28:46 +08:00
winlin
321f555e30 Clock: Update stat. Insert timer to execute first 2021-02-11 17:34:03 +08:00
winlin
040893efde Add research for UDP binding 2021-01-05 18:30:39 +08:00
winlin
c3938ddfd2 Research: Add cost analysis 2020-12-22 19:24:35 +08:00
winlin
a4d1b3e2ca Research: Add cost analysis 2020-12-22 17:36:18 +08:00
winlin
e71d770a26 Update 2020-10-31 21:19:41 +08:00
winlin
e830ca7d0c Research: Add huge coroutine test program 2020-10-31 21:00:09 +08:00
winlin
a579f51e72 Remove ST in research 2020-04-19 20:51:39 +08:00
winlin
1ffd5fd455 rename org simple-rtmp-server to ossrs 2015-11-11 10:37:50 +08:00
winlin
115daa3cc1 migarate from winlinvip to srs org 2015-04-29 17:06:32 +08:00
winlin
0bc35e093c for bug #200, deadloop when read/write 0 and ETIME. 2.0.16. 2014-11-13 14:30:56 +08:00
winlin
77cf885d8c add comments for #161 2014-11-13 13:49:50 +08:00
winlin
8ab6b57612 research st, the timeout and coroutine scheduler. 2014-11-11 12:58:25 +08:00
winlin
be46e428ad research st, for bug #193, remove the code with bug, exit when fork. 2014-11-11 11:25:52 +08:00
winlin
f4dfee0e9f research st, add comments for bug #193. 2014-11-11 11:24:19 +08:00
winlin
cd09fcaf55 research st, remove all events except epoll. 2014-11-11 11:15:58 +08:00
winlin
683b01a6c9 research st, add comments about the thread cycle 2014-11-10 14:54:52 +08:00
winlin
8327a57b7e never use stack variable for setjmp 2014-11-10 14:02:49 +08:00
winlin
2c01f7e943 research st, expand MD_INIT_CONTEXT macro, the thread start. 2014-11-10 13:52:17 +08:00
winlin
8da8c49f39 research st, add comments 2014-11-10 11:49:14 +08:00
winlin
2b70212649 research st, add stack struct comments. 2014-11-10 11:47:24 +08:00
winlin
6bde1e54dc research st, add stack alloc commnets. 2014-11-10 11:10:27 +08:00
winlin
e49a868308 research st, rename variable thread to trd, for thread is a keyword. 2014-11-10 11:06:06 +08:00
winlin
ac1a4ec0a3 research st, always alloc on stack. 2014-11-10 10:21:05 +08:00
winlin
ae8b3e3c00 research st, remove the support of MD_STACK_GROWS_UP 2014-11-09 12:05:59 +08:00
winlin
340464ed56 research st, remove __ia64__ cpu support 2014-11-09 12:04:56 +08:00
winlin
a27c3dca2d research st, add gdb info for setjmp. 2014-11-09 11:56:14 +08:00
winlin
4b24ee9db3 research st, only for linux and arm/mips/i386/x86_64 cpus. 2014-11-09 11:46:32 +08:00
winlin
0f41e0d26f research st: only support linux 2014-11-06 15:45:31 +08:00
winlin
d67454ecc2 research st: only support linux 2014-11-06 15:43:28 +08:00
winlin
5fd308c64e update code, warning when compile dev branch. 2014-11-06 15:18:10 +08:00
winlin
fa53250202 refine the macro, use int as version type. 2.0.8 2014-11-06 14:23:08 +08:00
winlin
8521762cb3 research st: refine sync. 2014-11-06 14:00:27 +08:00
winlin
3377df0bea research st: refine skt. 2014-11-06 13:55:06 +08:00
winlin
22710db911 research st: refine sched. 2014-11-06 13:52:15 +08:00
winlin
f5f8e8946f research st: refine event, io and key. 2014-11-06 13:40:24 +08:00
winlin
c38a545780 reserach st: refine key.c 2014-11-06 13:17:54 +08:00
winlin
fd0c85b324 research st: refine io. 2014-11-06 13:11:34 +08:00
winlin
f8f18fffa7 research st: update test for st. 2014-11-06 12:50:27 +08:00
winlin
0f293802c8 research st: refine the md.h 2014-11-05 17:42:57 +08:00
winlin
856ba07bd3 research st: update public and common. 2014-11-05 17:22:36 +08:00
winlin
315707d726 research st: refine public 2014-11-05 17:16:15 +08:00
winlin
bba2d3dd98 research st: replace the TAB with 4spaces 2014-11-05 17:12:56 +08:00
winlin
55bd1dd95e research st: replace the TAB with 4spaces 2014-11-05 17:10:54 +08:00
winlin
0faa38dc0c research st: remove the osguess.sh 2014-11-05 17:06:18 +08:00
winlin
2dc6b7d1ea add io for st research 2014-11-05 17:01:15 +08:00
winlin
511c814ffb refs #182: rename to sync test. 2014-10-26 16:38:00 +08:00