Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.org/irclogs/ Connected with DDNet's IRC channel, Matrix room and GitHub repositories — IRC: #ddnet on Quakenet | Matrix: #ddnet-developer:matrix.org GitHub: https://github.com/ddnet
Between 2024-04-12 00:00:00Z and 2024-04-13 00:00:00Z
Avatar
Thanks a lot Zwelf! Now I have to check what files to run this on based on file date, because all would take forever 😄
Avatar
5da64c5 Fix tee briefly appearing at previous position when joining - Robyt3 06f330a Merge pull request #8201 from Robyt3/Gameclient-OnReset-Fix - def-
Avatar
ws-client BOT 2024-04-12 02:11:26Z
<ChillerDragon> epic rust scripter
Avatar
epic irc chatter
Avatar
ws-client BOT 2024-04-12 02:12:25Z
<ChillerDragon> would someone be so nice and click the big green button here so i do not have to solve merge conflicts on every cherry pick and rebase https://github.com/ddnet/ddnet/pull/8189
The method CSnapShot::DebugDump() used to print just the raw snap items. Without item names or field names: 2024-04-07 09:10:01 I snapshot: data_size=356 num_items=10 2024-04-07 09:10:01 I snapshot...
Avatar
bruh
02:29
I hate co-workers that ignore spellchecks
02:31
spellcheck wasn't perfect but how are you committing this without even take a look at the squiggly lines public void SetTasfnorm(List<Transform> l)
Avatar
ws-client BOT 2024-04-12 02:34:30Z
<ChillerDragon> maybe its transphobia
Avatar
Avatar
ws-client
<ChillerDragon> maybe its transphobia
valid
Avatar
ws-client BOT 2024-04-12 02:35:25Z
<ChillerDragon> also who has spellcheck in the dev IDE?
02:35
<ChillerDragon> do you code in word?
02:36
<ChillerDragon> fred company be like
Avatar
Avatar
ws-client
<ChillerDragon> also who has spellcheck in the dev IDE?
jetbrains does have that by default
Avatar
ws-client BOT 2024-04-12 02:38:57Z
<ChillerDragon> ew jetbrains
Avatar
Avatar
ws-client
<ChillerDragon> ew jetbrains
cracked versions no less
Avatar
ws-client BOT 2024-04-12 02:39:41Z
<ChillerDragon> xd
02:39
<ChillerDragon> imagine having to crack your editor
02:39
<ChillerDragon> if there is free and open source ones
02:39
<ChillerDragon> like emacs
Avatar
it's just less work to train my coworkers to use git
Avatar
ws-client BOT 2024-04-12 02:40:42Z
<ChillerDragon> just tell them git gud
Avatar
no way
Avatar
ws-client BOT 2024-04-12 02:41:14Z
<ChillerDragon> i love how you have trainees that annoy you :D
Avatar
please remove "how"
Avatar
ws-client BOT 2024-04-12 02:41:35Z
<ChillerDragon> don't let them find these irc logs axaxax
Avatar
oh no worries, I tell them to their face about these as well
Avatar
ws-client BOT 2024-04-12 02:41:55Z
<ChillerDragon> i love you
02:42
<ChillerDragon> xxxxD
Avatar
❤️
02:42
Am I THE definition of "the prick" at work
Avatar
ws-client BOT 2024-04-12 02:42:38Z
<ChillerDragon> lmao
02:43
<ChillerDragon> and since your entire life is just work
02:43
<ChillerDragon> you are just a prick
Avatar
valid
02:43
still love you tho
Avatar
ws-client BOT 2024-04-12 02:43:21Z
<ChillerDragon> justatest
02:43
<ChillerDragon> heartw
02:43
<ChillerDragon> good that heinrich is sleeping hehe
Avatar
ws-client BOT 2024-04-12 02:43:47Z
<ChillerDragon> unmoderated timezone
02:43
<ChillerDragon> heinrich does not like me calling ppl pricks
Avatar
does it count if i'm calling myself that
Avatar
ws-client BOT 2024-04-12 02:44:21Z
<ChillerDragon> you never know
02:45
<ChillerDragon> also get off of discord and back to work watafak
02:45
<ChillerDragon> i tell your boss
Avatar
Avatar
ws-client
<ChillerDragon> i tell your boss
i don't care about losing jobs
02:46
they know that
Avatar
ws-client BOT 2024-04-12 02:46:40Z
<ChillerDragon> mood
Avatar
and they are scared of me
Avatar
ws-client BOT 2024-04-12 02:46:53Z
<ChillerDragon> so you can do surprise vacation and come visit me in indonesia?
Avatar
since when are you in indo
Avatar
ws-client BOT 2024-04-12 02:47:28Z
<ChillerDragon> idk january
Avatar
Avatar
ws-client
<ChillerDragon> so you can do surprise vacation and come visit me in indonesia?
I can do vacation at anytime. I got my adjusted leaves stacks
Avatar
ws-client BOT 2024-04-12 02:47:51Z
<ChillerDragon> pro
02:47
<ChillerDragon> lets go meet
Avatar
i would rather to go to germany once tho
Avatar
ws-client BOT 2024-04-12 02:48:17Z
<ChillerDragon> ok fine with that too
Avatar
are you going back to germany anytime soon
Avatar
ws-client BOT 2024-04-12 02:48:32Z
<ChillerDragon> next year
Avatar
are you german? i forgot
Avatar
ws-client BOT 2024-04-12 02:48:38Z
<ChillerDragon> i am
02:48
<ChillerDragon> leak
02:49
why are you all germans
Avatar
ws-client BOT 2024-04-12 02:49:32Z
<ChillerDragon> yes there are many germans indeed
02:50
<ChillerDragon> idk why exactly
02:50
<ChillerDragon> i feel like the entire open source community is run by germans
02:50
<ChillerDragon> oh and also teeworlds was on german television :D
02:51
<ChillerDragon> i know teeworlds from a german print magazine
Avatar
ye that
02:51
swedes got robbed
Avatar
ws-client BOT 2024-04-12 02:51:50Z
<ChillerDragon> wat
Avatar
isn't matrick swedish
Avatar
ws-client BOT 2024-04-12 02:52:26Z
<ChillerDragon> something like that
Avatar
~swedish people make good stuff and no one cares about whether they are swedish
Avatar
ws-client BOT 2024-04-12 02:53:21Z
<ChillerDragon> finnish?
Avatar
I always thought he was swedish exactly not just nordic
Avatar
ws-client BOT 2024-04-12 02:54:14Z
<ChillerDragon> idk
02:54
<ChillerDragon> i cant even remember his last name xd
Avatar
idk either now that you are unsure
02:54
lol
Avatar
ws-client BOT 2024-04-12 02:54:36Z
<ChillerDragon> auvivivnen
02:54
<ChillerDragon> i see his name like 10 times a day "copied refactor to trunk"
02:55
<ChillerDragon> but cant
Avatar
Avatar
ws-client
<ChillerDragon> i cant even remember his last name xd
ye but matricks isn't even his first name
Avatar
ws-client BOT 2024-04-12 02:55:33Z
<ChillerDragon> it kinda is
Avatar
i don't understand
Avatar
ws-client BOT 2024-04-12 02:55:59Z
<ChillerDragon> magnus = matricks
Avatar
western names are failing me
Avatar
ws-client BOT 2024-04-12 02:56:34Z
<ChillerDragon> same name
02:56
<ChillerDragon> you can basically dox all tw players with this technique
02:56
<ChillerDragon> deen = dennis
Avatar
next you are telling me your last name is dragon
Avatar
ws-client BOT 2024-04-12 02:57:04Z
<ChillerDragon> Learath2 = Lennart2
02:57
<ChillerDragon> nono only works for first names
Avatar
too bad i'm not frederick or something
Avatar
ws-client BOT 2024-04-12 02:57:56Z
<ChillerDragon> TsFreddie = Freddie
02:57
<ChillerDragon> ez dox
02:58
<ChillerDragon> Jupstar = Justus
02:59
<ChillerDragon> okok i gotta work on 0.7 again was trol chatting w u babe
Avatar
but I'm chinese?
Avatar
Avatar
ws-client
<ChillerDragon> okok i gotta work on 0.7 again was trol chatting w u babe
wdym 0.7
Avatar
ws-client BOT 2024-04-12 03:05:19Z
<ChillerDragon> ddnet 0.7 client demos
03:06
<ChillerDragon> 弗雷迪
Avatar
Avatar
ws-client
<ChillerDragon> ddnet 0.7 client demos
cool
Avatar
Avatar
Zwelf
Example when using with cargo run in twgame git checkout: cargo run --bin bug-8199 ~/.local/share/ddnet/teehistorian/
Could it also print the map and name of the people in that team or is that hard to add?
04:45
Seems like we have a lot of affected teehistorian files, so will take some time to go through all of them
Avatar
that would work too (can also add a timestamp check).
Replying to @deen Could it also print the map and name of the people in that team or is th…
Avatar
I'm tired (again)
Avatar
fred again
09:09
@Ewan check this
09:09
audio
Avatar
Avatar
deen
Thanks a lot Zwelf! Now I have to check what files to run this on based on file date, because all would take forever 😄
You can also check the git revision in the teehistorian header
Avatar
Avatar
Headshot
Click to see attachment 🖼️
That's... a green screen poggers
justatest 1
Avatar
Avatar
ws-client
<ChillerDragon> Learath2 = Lennart2
Don't you ever dare use that name for me
Avatar
@Learath2 do u know aarch64 asm
Avatar
Nope. I know it has some quirks though
Avatar
btw, do u have any hint on what a possible segfault could be if it only segfaults in x86_64, but not on aarch64? the result is wrong so its a bug
09:52
but i wonder if it has to do with some aligment
09:52
if i put 2 sigtraps it doesnt segfault on x86
Avatar
Memory ordering is weak on aarch64, are multiple threads involved?
09:53
all single thread
09:53
Dump of assembler code for function program::program::try_into_bytes(f1): 0x00007ffff7fbf000 <+0>: push r14 0x00007ffff7fbf002 <+2>: push rbx ; here rbx has an addressable address 0x00007ffff7fbf003 <+3>: sub rsp,0x98 0x00007ffff7fbf00a <+10>: mov r10d,DWORD PTR [rsp+0xb0] 0x00007ffff7fbf012 <+18>: mov r11d,DWORD PTR [rsp+0xb8] 0x00007ffff7fbf01a <+26>: mov eax,r9d 0x00007ffff7fbf01d <+29>: mov rbx,rdi 0x00007ffff7fbf020 <+32>: mov r9,r8 0x00007ffff7fbf023 <+35>: sub rsp,0x8 0x00007ffff7fbf027 <+39>: movabs r14,0x7ffff7fbf290 0x00007ffff7fbf031 <+49>: lea rdi,[rsp+0x48] 0x00007ffff7fbf036 <+54>: xor r8d,r8d 0x00007ffff7fbf039 <+57>: push 0x0 0x00007ffff7fbf03b <+59>: push 0x0 0x00007ffff7fbf03d <+61>: push 0x0 0x00007ffff7fbf03f <+63>: push 0x0 0x00007ffff7fbf041 <+65>: push r11 0x00007ffff7fbf043 <+67>: push r10 0x00007ffff7fbf045 <+69>: push rax 0x00007ffff7fbf046 <+70>: call r14 ; after this call, rbx has a invalid addr - program::program::try_into_bytes[expr29](f0) 0x00007ffff7fbf049 <+73>: add rsp,0x40 0x00007ffff7fbf04d <+77>: vmovups xmm0,XMMWORD PTR [rsp+0x60] 0x00007ffff7fbf053 <+83>: mov rsi,QWORD PTR [rsp+0x58] 0x00007ffff7fbf058 <+88>: mov rax,QWORD PTR [rsp+0x40] 0x00007ffff7fbf05d <+93>: mov rcx,QWORD PTR [rsp+0x48] 0x00007ffff7fbf062 <+98>: mov rdx,QWORD PTR [rsp+0x50] 0x00007ffff7fbf067 <+103>: mov rdi,QWORD PTR [rsp+0x70] 0x00007ffff7fbf06c <+108>: mov QWORD PTR [rsp+0x20],rsi 0x00007ffff7fbf071 <+113>: mov QWORD PTR [rsp+0x38],rdi 0x00007ffff7fbf076 <+118>: vmovups XMMWORD PTR [rsp+0x28],xmm0 0x00007ffff7fbf07c <+124>: test sil,0x1 0x00007ffff7fbf080 <+128>: jne 0x7ffff7fbf0b5 <program::program::try_into_bytes(f1)+181> 0x00007ffff7fbf082 <+130>: vmovups xmm0,XMMWORD PTR [rsp+0x80] 0x00007ffff7fbf08b <+139>: mov BYTE PTR [rsp+0x78],0x0 0x00007ffff7fbf090 <+144>: mov edi,DWORD PTR [rsp+0x90] 0x00007ffff7fbf097 <+151>: mov rsi,QWORD PTR [rsp+0x78] => 0x00007ffff7fbf09c <+156>: mov QWORD PTR [rbx+0x10],rdx 0x00007ffff7fbf0a0 <+160>: mov QWORD PTR [rbx+0x8],rcx 0x00007ffff7fbf0a4 <+164>: mov DWORD PTR [rbx+0x30],edi
09:53
here is the assembly
09:53
the segfault happens on that store
Avatar
Show registers
Avatar
ok wait
09:54
gotta rerun this
09:54
xd
Avatar
Avatar
Ryozuki
Dump of assembler code for function program::program::try_into_bytes(f1): 0x00007ffff7fbf000 <+0>: push r14 0x00007ffff7fbf002 <+2>: push rbx ; here rbx has an addressable address 0x00007ffff7fbf003 <+3>: sub rsp,0x98 0x00007ffff7fbf00a <+10>: mov r10d,DWORD PTR [rsp+0xb0] 0x00007ffff7fbf012 <+18>: mov r11d,DWORD PTR [rsp+0xb8] 0x00007ffff7fbf01a <+26>: mov eax,r9d 0x00007ffff7fbf01d <+29>: mov rbx,rdi 0x00007ffff7fbf020 <+32>: mov r9,r8 0x00007ffff7fbf023 <+35>: sub rsp,0x8 0x00007ffff7fbf027 <+39>: movabs r14,0x7ffff7fbf290 0x00007ffff7fbf031 <+49>: lea rdi,[rsp+0x48] 0x00007ffff7fbf036 <+54>: xor r8d,r8d 0x00007ffff7fbf039 <+57>: push 0x0 0x00007ffff7fbf03b <+59>: push 0x0 0x00007ffff7fbf03d <+61>: push 0x0 0x00007ffff7fbf03f <+63>: push 0x0 0x00007ffff7fbf041 <+65>: push r11 0x00007ffff7fbf043 <+67>: push r10 0x00007ffff7fbf045 <+69>: push rax 0x00007ffff7fbf046 <+70>: call r14 ; after this call, rbx has a invalid addr - program::program::try_into_bytes[expr29](f0) 0x00007ffff7fbf049 <+73>: add rsp,0x40 0x00007ffff7fbf04d <+77>: vmovups xmm0,XMMWORD PTR [rsp+0x60] 0x00007ffff7fbf053 <+83>: mov rsi,QWORD PTR [rsp+0x58] 0x00007ffff7fbf058 <+88>: mov rax,QWORD PTR [rsp+0x40] 0x00007ffff7fbf05d <+93>: mov rcx,QWORD PTR [rsp+0x48] 0x00007ffff7fbf062 <+98>: mov rdx,QWORD PTR [rsp+0x50] 0x00007ffff7fbf067 <+103>: mov rdi,QWORD PTR [rsp+0x70] 0x00007ffff7fbf06c <+108>: mov QWORD PTR [rsp+0x20],rsi 0x00007ffff7fbf071 <+113>: mov QWORD PTR [rsp+0x38],rdi 0x00007ffff7fbf076 <+118>: vmovups XMMWORD PTR [rsp+0x28],xmm0 0x00007ffff7fbf07c <+124>: test sil,0x1 0x00007ffff7fbf080 <+128>: jne 0x7ffff7fbf0b5 <program::program::try_into_bytes(f1)+181> 0x00007ffff7fbf082 <+130>: vmovups xmm0,XMMWORD PTR [rsp+0x80] 0x00007ffff7fbf08b <+139>: mov BYTE PTR [rsp+0x78],0x0 0x00007ffff7fbf090 <+144>: mov edi,DWORD PTR [rsp+0x90] 0x00007ffff7fbf097 <+151>: mov rsi,QWORD PTR [rsp+0x78] => 0x00007ffff7fbf09c <+156>: mov QWORD PTR [rbx+0x10],rdx 0x00007ffff7fbf0a0 <+160>: mov QWORD PTR [rbx+0x8],rcx 0x00007ffff7fbf0a4 <+164>: mov DWORD PTR [rbx+0x30],edi
Rbx getting broken by that call is weird, isn’t rbx callee saved?
09:57
its odd
09:57
@Learath2 u need a pop to restore it right?
09:57
or can u restore it by changing rsp
Avatar
Afaik how you preserve it is not defined
Avatar
$rax : 0x1 $rbx : 0x7fff00000000 $rcx : 0x9875ec $rdx : 0x0 $rsp : 0x00007fffffff8840 → 0x0000555565d304a8 → 0x8000000000000008 $rbp : 0x00007fffffff89e8 → 0x00007fffffff9260 → 0x0000000000000000 $rsi : 0x00007fffffff9100 → 0x0000555565d28920 → 0x0000000000000008 $rdi : 0xffff89e8 $rip : 0x00007ffff7fc209c → 0x084b894810538948 $r8 : 0x0 $r9 : 0x00007fffffff87b8 → 0x0000555565d27e00 → 0x0000555565d68408 → 0x0000555565d458f0 → 0x0000555030bf20e5 $r10 : 0x00007fffffff87b8 → 0x0000555565d27e00 → 0x0000555565d68408 → 0x0000555565d458f0 → 0x0000555030bf20e5 $r11 : 0x0 $r12 : 0x0 $r13 : 0x0000555565d87e80 → 0x0000555030829037 $r14 : 0x00007ffff7fc2290 → 0x4853544156415741 ("AWAVATSH"?) $r15 : 0x9875ec $eflags: [ZERO carry PARITY adjust sign trap INTERRUPT direction overflow RESUME virtualx86 identification] $cs: 0x33 $ss: 0x2b $ds: 0x00 $es: 0x00 $fs: 0x00 $gs: 0x00
10:00
let me giveu the asm
10:00
of the call r14
Avatar
Avatar
Ryozuki
$rax : 0x1 $rbx : 0x7fff00000000 $rcx : 0x9875ec $rdx : 0x0 $rsp : 0x00007fffffff8840 → 0x0000555565d304a8 → 0x8000000000000008 $rbp : 0x00007fffffff89e8 → 0x00007fffffff9260 → 0x0000000000000000 $rsi : 0x00007fffffff9100 → 0x0000555565d28920 → 0x0000000000000008 $rdi : 0xffff89e8 $rip : 0x00007ffff7fc209c → 0x084b894810538948 $r8 : 0x0 $r9 : 0x00007fffffff87b8 → 0x0000555565d27e00 → 0x0000555565d68408 → 0x0000555565d458f0 → 0x0000555030bf20e5 $r10 : 0x00007fffffff87b8 → 0x0000555565d27e00 → 0x0000555565d68408 → 0x0000555565d458f0 → 0x0000555030bf20e5 $r11 : 0x0 $r12 : 0x0 $r13 : 0x0000555565d87e80 → 0x0000555030829037 $r14 : 0x00007ffff7fc2290 → 0x4853544156415741 ("AWAVATSH"?) $r15 : 0x9875ec $eflags: [ZERO carry PARITY adjust sign trap INTERRUPT direction overflow RESUME virtualx86 identification] $cs: 0x33 $ss: 0x2b $ds: 0x00 $es: 0x00 $fs: 0x00 $gs: 0x00
Is this at the moment of crash? I suggest you investigate that call into whatever is in r14
Avatar
yes moment of crash
10:02
before call to r14
10:02
rbx has this
10:02
$rbx : 0x00007fffffff88f8 → 0x00007fffffff9110 → 0x0000555565d34510 → 0x0000000000000008
10:03
the expr number changed but dont mind it the function
10:03
omg
Avatar
Can you also check what is in r14? What function are you calling?
Avatar
im calling program::program::try_into_bytes[expr25](f0):
10:04
Dump of assembler code for function program::program::try_into_bytes[expr25](f0): => 0x00007ffff7fc22a0 <+0>: push r15 0x00007ffff7fc22a2 <+2>: push r14 0x00007ffff7fc22a4 <+4>: push r12 0x00007ffff7fc22a6 <+6>: push rbx 0x00007ffff7fc22a7 <+7>: sub rsp,0x68 0x00007ffff7fc22ab <+11>: int3 0x00007ffff7fc22ac <+12>: mov r14,rdi 0x00007ffff7fc22af <+15>: mov rdi,QWORD PTR [rsp+0xa8] 0x00007ffff7fc22b7 <+23>: mov r12,rsi 0x00007ffff7fc22ba <+26>: inc r12 0x00007ffff7fc22bd <+29>: mov r15,rcx 0x00007ffff7fc22c0 <+32>: mov rbx,rdx 0x00007ffff7fc22c3 <+35>: xor eax,eax 0x00007ffff7fc22c5 <+37>: test al,al 0x00007ffff7fc22c7 <+39>: jne 0x7ffff7fc233d <program::program::try_into_bytes[expr25](f0)+157> 0x00007ffff7fc22c9 <+41>: mov esi,DWORD PTR [rsp+0x98] 0x00007ffff7fc22d0 <+48>: mov eax,DWORD PTR [rsp+0xc0] 0x00007ffff7fc22d7 <+55>: mov ecx,DWORD PTR [rsp+0xb8] 0x00007ffff7fc22de <+62>: mov edx,DWORD PTR [rsp+0xb0] 0x00007ffff7fc22e5 <+69>: lea r10,[rsp+0x48] 0x00007ffff7fc22ea <+74>: lea r9,[rsp+0x28] 0x00007ffff7fc22ef <+79>: sub esi,DWORD PTR [rsp+0x90] 0x00007ffff7fc22f6 <+86>: cmp r8d,esi 0x00007ffff7fc22f9 <+89>: cmove r9,r10 0x00007ffff7fc22fd <+93>: mov DWORD PTR [r9+0x14],ecx 0x00007ffff7fc2301 <+97>: mov DWORD PTR [r9+0x10],edx 0x00007ffff7fc2305 <+101>: mov QWORD PTR [r9+0x8],rdi 0x00007ffff7fc2309 <+105>: mov DWORD PTR [r9+0x18],eax 0x00007ffff7fc230d <+109>: mov DWORD PTR [r9+0x20],r8d 0x00007ffff7fc2311 <+113>: mov BYTE PTR [r9],0x0 0x00007ffff7fc2315 <+117>: vmovups xmm0,XMMWORD PTR [r9+0x8] 0x00007ffff7fc231b <+123>: mov rax,QWORD PTR [r9] 0x00007ffff7fc231e <+126>: mov rcx,QWORD PTR [r9+0x18] 0x00007ffff7fc2322 <+130>: mov QWORD PTR [r14+0x10],r15 0x00007ffff7fc2326 <+134>: mov QWORD PTR [r14+0x8],rbx 0x00007ffff7fc232a <+138>: mov QWORD PTR [r14+0x30],rcx 0x00007ffff7fc232e <+142>: vmovups XMMWORD PTR [r14+0x20],xmm0 0x00007ffff7fc2334 <+148>: mov QWORD PTR [r14+0x18],rax 0x00007ffff7fc2338 <+152>: mov QWORD PTR [r14],r12 0x00007ffff7fc233b <+155>: jmp 0x7ffff7fc23b8 <program::program::try_into_bytes[expr25](f0)+280> 0x00007ffff7fc233d <+157>: movabs rax,0x7ffff7a0b0c0 0x00007ffff7fc2347 <+167>: call rax 0x00007ffff7fc2349 <+169>: movabs rax,0x7ffff7a0b320 0x00007ffff7fc2353 <+179>: mov esi,0x100 0x00007ffff7fc2358 <+184>: xor edi,edi 0x00007ffff7fc235a <+186>: call rax 0x00007ffff7fc235c <+188>: movabs rcx,0x7ffff7fc1020 0x00007ffff7fc2366 <+198>: vmovaps ymm0,YMMWORD PTR [rcx] 0x00007ffff7fc236a <+202>: movabs rcx,0x100000000 0x00007ffff7fc2374 <+212>: vmovups YMMWORD PTR [rax],ymm0 0x00007ffff7fc2378 <+216>: mov QWORD PTR [rsp+0x18],rcx 0x00007ffff7fc237d <+221>: mov QWORD PTR [rsp+0x10],rax 0x00007ffff7fc2382 <+226>: mov BYTE PTR [rsp+0x8],0x1
10:04
0x00007ffff7fc2387 <+231>: mov DWORD PTR [rsp+0x20],0x8 0x00007ffff7fc238f <+239>: vmovups xmm0,XMMWORD PTR [rsp+0x10] 0x00007ffff7fc2395 <+245>: mov rax,QWORD PTR [rsp+0x8] 0x00007ffff7fc239a <+250>: mov rcx,QWORD PTR [rsp+0x20] 0x00007ffff7fc239f <+255>: mov QWORD PTR [r14],r12 0x00007ffff7fc23a2 <+258>: mov QWORD PTR [r14+0x10],r15 0x00007ffff7fc23a6 <+262>: mov QWORD PTR [r14+0x30],rcx 0x00007ffff7fc23aa <+266>: vmovups XMMWORD PTR [r14+0x20],xmm0 0x00007ffff7fc23b0 <+272>: mov QWORD PTR [r14+0x18],rax 0x00007ffff7fc23b4 <+276>: mov QWORD PTR [r14+0x8],rbx 0x00007ffff7fc23b8 <+280>: mov rax,r14 0x00007ffff7fc23bb <+283>: add rsp,0x68 0x00007ffff7fc23bf <+287>: pop rbx 0x00007ffff7fc23c0 <+288>: pop r12 0x00007ffff7fc23c2 <+290>: pop r14 0x00007ffff7fc23c4 <+292>: pop r15 0x00007ffff7fc23c6 <+294>: vzeroupper 0x00007ffff7fc23c9 <+297>: ret
10:04
its this
10:04
xd
Avatar
It saves and restores rbx as required of it, unless there is an early exit I’m missing or the stack pointer is getting ruined somehow
Avatar
ye weird
10:06
what does vzeroupper?
10:06
VZEROUPPER — Zero Upper Bits of YMM and ZMM Registers
10:06
xD
Avatar
Also part of cleanup, some legacy thing
10:08
If you dirty zmm, you are supposed to do that before you return to restore the upper part to zero
10:09
Well I don’t see anything obv wrong. I guess I would step through see how on earth that pop rbx doesn’t happen or how rsp gets ruined
10:09
ill look more into this
10:10
@Learath2 u know how fun it is not knowing if something is your bug or a llvm bug
10:10
xD
10:10
we found a MLIR bug that got fixed in llvm 18
Avatar
If this is rust, it could be miscompilation
Avatar
no its our own
10:12
compiler
10:12
its how i added the sigtrap
10:12
manually xd
10:12
u can see the int3
10:14
and ye its probs something we do wrong
Avatar
Avatar
Ryozuki
no its our own
Then your own mistake is more likely
Avatar
Avatar
Ryozuki
btw, do u have any hint on what a possible segfault could be if it only segfaults in x86_64, but not on aarch64? the result is wrong so its a bug
If I'm not mistaken, writing an infinite recursing function, is guaranteed to produce this message: thread '' has overflowed its stack fatal runtime error: stack overflow I recently acc...
Avatar
its not rust
10:16
xD
Avatar
But it could be stack overflow for you too
Avatar
do u overflow the stack on a store?
10:18
hmm could be
Avatar
Maybe you have a store into a wrong offset that ruins the stack pointer or the stack itself in that call into r14, which restores a wrong rbx
Avatar
I would first keep track of rsp, see if that’s broken
Avatar
@Learath2 notice
10:23
there is a add rsp, 0x68
10:23
xD
10:24
before the pops
10:24
its what messes the rsp
10:24
and sets rbx to 0x00007fff00000000
10:24
which is not rly a addr
10:24
before going to that it comes from a jump
10:25
0x00007ffff7fc233b <+155>: jmp 0x7ffff7fc23b8 <program::program::try_into_bytes[expr25](f0)+280>
10:25
this jump
10:25
it skips this 0x00007ffff7fc2378 <+216>: mov QWORD PTR [rsp+0x18],rcx 0x00007ffff7fc237d <+221>: mov QWORD PTR [rsp+0x10],rax 0x00007ffff7fc2382 <+226>: mov BYTE PTR [rsp+0x8],0x1 0x00007ffff7fc2387 <+231>: mov DWORD PTR [rsp+0x20],0x8
Avatar
Mh, that’s normal, the add is to get rid of the stack of the callee
Avatar
true there is also a 0x00007ffff7fc22a7 <+7>: sub rsp,0x68
10:26
at the start
Avatar
Push push push, sub rsp to allocate the stack of the callee,……,add rsp to deallocate the stack of the callee, pop pop pop
Avatar
how can i print the stack minus 0x68?
Avatar
In gdb?
Avatar
Dump of assembler code for function program::program::try_into_bytes[expr25](f0): 0x00007ffff7fc22a0 <+0>: push r15 0x00007ffff7fc22a2 <+2>: push r14 0x00007ffff7fc22a4 <+4>: push r12 0x00007ffff7fc22a6 <+6>: push rbx 0x00007ffff7fc22a7 <+7>: sub rsp,0x68 0x00007ffff7fc22ab <+11>: int3 => 0x00007ffff7fc22ac <+12>: mov r14,rdi
10:26
i can only stop here
10:27
after the sub
10:27
ye gdb
Avatar
$rsp + 0x68 no?
10:27
- whatever (edited)
Avatar
gef➤ print ($rsp+0x68) $2 = (void *) 0x7fffffff8a68
10:27
xd
10:28
gef➤ print *0x7fffffff8a68 $3 = 0xffff8b98
Avatar
You want to examine the memory there, not just it’s address
10:28
i forgot gdb xd
Avatar
x/10w ($rsp+0x68) (edited)
Avatar
whats x?
Avatar
eXamine
Avatar
gef➤ print x/10w ($rsp+0x68) No symbol "x" in current context.
Avatar
No print
Avatar
0x7fffffff8a68: 0xffff8b98 0x7fff 0x0 0x0 0x7fffffff8a78: 0xf7fc22a0 0x7fff 0x9875ec 0x0 0x7fffffff8a88: 0xf7fc204a 0x7fff
Avatar
Make that 10g
Avatar
can you explain what it does
Avatar
Just printing 10 words at that address
10:30
10g would be giant words instead 64b
Avatar
0x7fffffff8a68: 0x7fffffff8b98 0x0 0x7fffffff8a78: 0x7ffff7fc22a0 0x9875ec 0x7fffffff8a88: 0x7ffff7fc204a 0x0 0x7fffffff8a98: 0x0 0x0 0x7fffffff8aa8: 0x0 0x0
10:30
xD
10:31
gef prints this
10:31
$rbx : 0x00007fffffff8b98 → 0x00007fffffff9370 → 0x0000555565d05cd0 → 0x0000000000000008
10:31
for rbx
10:31
before its modified i mean
Avatar
Okay, you see the rbx there at the top of the stack
Avatar
Now see why it doesn’t get restored correctly on pop
10:32
Is our rsp after adding the 0x68 back not the same anymore?
10:32
Or has the stack value gotten destroyed. We could use a watchpoint in that case to see what store destroys it
Avatar
oh wait
10:33
gef➤ x/10g ($rsp) 0x7fffffff8a68: 0x7fff00000000 0x0 0x7fffffff8a78: 0x7ffff7fc22a0 0x9875ec 0x7fffffff8a88: 0x7ffff7fc204a 0x0 0x7fffffff8a98: 0x0 0x0 0x7fffffff8aa8: 0x0 0x0
10:33
this one
10:34
looks like smth changes it
Avatar
Okay the stack value got destroyed, so lets watch that address and see what destroys it
Avatar
how? xD
10:34
watch i guess
10:36
Make sure you cast it to something 8 byte though
10:37
watch *(size_t *)($rsp+0x68) or something like that
Avatar
do i put the watch when im inside that function?
10:39
well ill step where i was
10:39
→ 0x7ffff7fc2311 <program::program::try_into_bytesexpr25+113> mov BYTE PTR [r9], 0x0
10:39
it stopped here
Avatar
Avatar
Ryozuki
do i put the watch when im inside that function?
Check r9, I'm guessing it points into the stack
Avatar
$r9 : 0x00007fffffff8a48 → 0x0000000000000034 ("4"?)
10:40
looks purple so its stack
10:40
yes
Avatar
But wait, mh it's an indirect mov, no?
Avatar
it moves the byte 0x0 to the addr at r9
10:42
the other break is at the pop
10:42
→ 0x7ffff7fc23bf <program::program::try_into_bytesexpr25+287> pop rbx
Avatar
See the lea r9 at +74?
Avatar
oh wait i rerun
10:43
0x00007ffff7fc22e5 <+69>: lea r10,[rsp+0x48] 0x00007ffff7fc22ea <+74>: lea r9,[rsp+0x28]
10:43
yes
Avatar
I’ve run out of context at this point, but that first write you found is what destroys the value in stack. Perhaps you have a self referential pointer there?
Avatar
could be
10:43
thanks for the help though!
Avatar
Hope it’s of some use. Gl
Avatar
0x00007ffff7fc22e5 <+69>: lea r10,[rsp+0x48] ; this stack addr is loaded into r9 0x00007ffff7fc22ea <+74>: lea r9,[rsp+0x28] ; or this stack addr is loaded into r9 0x00007ffff7fc22ef <+79>: sub esi,DWORD PTR [rsp+0x90] 0x00007ffff7fc22f6 <+86>: cmp r8d,esi ; which depends on this 0x00007ffff7fc22f9 <+89>: cmove r9,r10 ; at this cmov
10:46
@Learath2 actually it may be the first lea too
10:46
cuz the cmp and cmove
10:47
Idk what might be in those positions to comment. I guess that's what you should investigate now
10:47
Check what the caller stores in the stack there, or what the generated assembly is trying to access
10:48
Oh actually those are locals
10:49
But I don't see them being filled at all, so you might be loading uninitialized garbage
10:50
Maybe zero initialize the local stack, that might make the bug more obvious
10:51
You also seem to access far more than you allocate. I don't quite understand whats going on there
Avatar
0x68 we reserve for the frame, but I see access to rsp + a8 98, b8
Avatar
i see i see
10:52
i guess i might be doing some allocas wrong
10:56
@Learath2 if u look enough im sure u can get a nice job
10:56
ur a pro
Avatar
I guess that is enough hints for you to go off of for now. Filling your stack with 0s might make it crash faster and more obv
10:56
ill see how i can do that with llvm xD
10:56
well i guess i can zero init after a alloca
Avatar
Might be a good start yeah
Avatar
or is 0xbeef more obvious
10:56
xd
10:57
@Learath2 any good books on debugging?
10:57
or gdb related
10:57
or resources
10:57
i rly need to step up my debugging xD
10:57
i can get my company to buy it >:)
Avatar
That is one topic I never really read up on. I just kept referring to the gdb docs as I needed stuff
Avatar
Learning some reverse engineering does help. It is a similar kind of thinking
11:00
Debugging is the art of finding mistakes in code by tracing program execution line by line. This book will help programmers master the art of debugging with two popular Open Source debuggers: GDB and DDD. The book integrates general debugging principles with concrete examples and covers many topi...
11:00
insane
11:00
this book
11:00
i saw it recommended
11:00
but it costs 210€
11:01
Finding your bug is a process of confirming the many things you believe are true, until you find one which is not true.
11:01
xD
Avatar
That is a good quote 😄
Avatar
@Learath2 funny thing when i was debugging i found calls to memcpy avx512
11:06
pog ryzen
11:06
xD
Avatar
Pogzen
Avatar
do u know what is __futex_abstimed_wait_common64
11:10
@Learath2 do u use ddd?
11:11
ah looks like its some gui
Avatar
Avatar
Ryozuki
@Learath2 do u use ddd?
The driver thing? I've had to in the past
Avatar
why does ddd look so ugly
11:19
Avatar
Avatar
Ryozuki
do u know what is __futex_abstimed_wait_common64
It's the userspace part of the futex wait for uncontested futexes iirc
11:20
It'll spin there for very little time before going into a deeper slumber using the futex syscall
Avatar
Avatar
Ryozuki
Click to see attachment 🖼️
Oh, I've never seen this
Avatar
i guess ddd is ancient
11:20
GNU DDD
Avatar
I only use gdb and sometimes gdb with tui
11:21
Lldb if I'm stuck on macos
Avatar
how do u enable tui
Avatar
^x ^a
11:22
Or just ^x a apparently
Avatar
hm maybe its broken with gef
11:23
does tui help if u have like no sources xd
Avatar
You can start it with -tui too
Avatar
Avatar
Ryozuki
does tui help if u have like no sources xd
Probably not very useful
Avatar
Avatar
Learath2
I only use gdb and sometimes gdb with tui
Oh and gdb with gef when reverse engineering
Avatar
@Learath2
Avatar
Avatar
Ryozuki
@Learath2
So true
Avatar
Avatar
Ryozuki
@Learath2
lmao i love that template so much
Avatar
Avatar
Ryozuki
@Learath2
XDD
14:11
@Learath2 what u think
14:12
i looked to much assembly i need memes now
Avatar

Checklist

  • [ ] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [ ] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-ad...
Avatar
Avatar
Ryozuki
Click to see attachment 🖼️
Postgres is a very flexible tool indeed. Unless you have some extreme demands from your data store, it can fill in for a lot of the newfangled stuff
Avatar
omg weird stuff
15:11
i was testing this using a JIT engine from llvm
15:11
using it as a .so library it doesnt segfault
15:12
oh
15:12
the .so isnt optimized
Avatar
If optimization is what breaks it, it’s very very likely you are violating a constraint without noticing
15:14
without opts the stack looks so clean
15:14
its all zeros
15:14
there is only this 0x00007fffffff8b30 → 0x0000000000000000
15:16
yep it breaks
Avatar
Preparation for larger refactoring of the image loading/saving.

Checklist

  • [X] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [ ] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or va...
16:12
74411fb Update Estonian translations by Cammo - def- 5a05f6e Merge pull request #8202 from def-/pr-estonian - Robyt3
Avatar
Avatar
Ryozuki
Click to see attachment 🖼️
Average Postgres W gigachad
Avatar
yo have question records channel messages about top 1 of each map is public to know how it's calculate and comparing to next place ?
Avatar
just do (old_time / new_time) * 100?
16:55
time in game ticks
Avatar
no I mean when and where it's check is it checking on ddnet server then it's sending by discord webhook ?
Avatar
The magic scripts that make DDNet run. Contribute to ddnet/ddnet-scripts development by creating an account on GitHub.
The magic scripts that make DDNet run. Contribute to ddnet/ddnet-scripts development by creating an account on GitHub.
Avatar
Avatar
Ryozuki
@Ewan check this
scary
Avatar
Avatar
Headshot
Click to see attachment 🖼️
direct 3d? justatest
Avatar
don't be misled... that's just what i'm using as the renderer on dolphin
18:46
justatest
Avatar
Avatar
Ryozuki
Click to see attachment 🖼️
I saw a different variation
19:13
I love it when I type too fast and get sent to bing instead
Avatar
Avatar
deen
Seems like we have a lot of affected teehistorian files, so will take some time to go through all of them
The output is now a lot clearer. It outputs player names, timestamp, map and only looks at teehistorian files between 2024-04-07 and 2024-04-13. I think for the remaining affected teehistorian files it is best to check with the database whether finishes exist on those and only then check the demo.
Avatar
Avatar
Peter0x44
I love it when I type too fast and get sent to bing instead
I just use Open-Shell
Avatar
even better
monkalaugh 3
Avatar
Gentoo mentioned
Avatar
Avatar
Headshot
don't be misled... that's just what i'm using as the renderer on dolphin
Why
20:04
He wants u to use Vulkan
Avatar
GENTOO
Avatar
Avatar
Peter0x44
even better
jesus christ
20:59
unrelated but the dr put me on vyvanse and it's like i was living in hard mode tbh
20:59
now i don't really have to think about whether or not i want to do something before i do it
20:59
i feel actually normal
20:59
now i want a feature to add to ddnet or something
20:59
to kill time
Avatar
Avatar
Ewan
to kill time
speaking of kill - may i reintroduce the idea to rescue on kill tile collision within practice mode? kek - why not write some rust stuff!
Avatar
Avatar
meloƞ
speaking of kill - may i reintroduce the idea to rescue on kill tile collision within practice mode? kek - why not write some rust stuff!
like i've already said, it's completely finished the way i want it to be done
21:12
if heinrich has other intentions then he's free to implement them
21:12
but i'm not putting in more work just so his toddler attitude can be appeased
21:13
thanks for the suggestion though
21:13
doing something in rust is a good idea
21:13
but im not sure what
Avatar
Avatar
Ewan
He wants u to use Vulkan
justatest
Avatar
i'm hoping some of zwelf's rust interfaces get merged eventually
21:15
so ddnet rust can actually be functional
21:16
atm it'd be so much FFI tomfoolery to even get started
Avatar
gerdoe and me (want to give proper credit ofc) are currently cooking a (currently closed source) rustapi to handle accounts using sqlx, axum and tokio, loving the journey so far (edited)
21:18
pub async fn create(pool: &MySqlPool, user: User) -> Result<Option<i32>, sqlx::Error> { let result = sqlx::query("INSERT IGNORE INTO users (username, password) VALUES (?, ?)") .bind(&user.username) .bind(&user.password) .execute(pool) .await?; if result.rows_affected() == 1 { Ok(Some(result.last_insert_id() as i32)) } else { Ok(None) } } i fckn love this syntax so much, its so much fun
Avatar
Avatar
Ewan
unrelated but the dr put me on vyvanse and it's like i was living in hard mode tbh
Lisdexamfetamine just doesn't do anything for me. Methylphenidate kinda makes me want to do stuff but I only ever had it for a short while since no doctor wants to prescribe it in Italy or Turkey
21:31
I'm doomed to undiagnosed adhd since no doctor is willing to diagnose me. They just say I'm depressed ignoring the fact that I'm depressed because of my adhd, not the other way around
Avatar
i feel like i was the same way to be honest
21:31
i mean
21:31
im not out of it yet right
21:31
i'm new on vyvanse
21:32
but if it continues to work the way it has then i feel like it's the solution for me
21:32
most of my depressive tendencies are a result of bad habits from adhd
21:32
it's sad that it doesn't work for you, i never tried ritalin so i can't say much about it
Avatar
Avatar
Ewan
most of my depressive tendencies are a result of bad habits from adhd
i feel like when i was younger i could do these things without consequences
21:34
but it takes its toll
21:34
sleep whenever, eat whenever, caff whenever
21:34
only do school if i want
Avatar
Ritalin for me (i got it prescribed as a Kid until i was 18 y/o) Just Made Me sleepy and loose my appetite, it only really worked for exams where sitting still was difficult for Me
Avatar
that's usually how it's supposed to work unfortunately
21:35
it's supposed to make you feel "normal"
21:35
maybe sleepy is a side effect
Avatar
If thats normal i rather snort crack everyday fr
Avatar
i sort of lose my edge in the late afternoon
21:35
but i think it would be fixed by proper sleep habits
21:35
constent and abundant sleep is incredibly important for your health
Avatar
Avatar
meloƞ
pub async fn create(pool: &MySqlPool, user: User) -> Result<Option<i32>, sqlx::Error> { let result = sqlx::query("INSERT IGNORE INTO users (username, password) VALUES (?, ?)") .bind(&user.username) .bind(&user.password) .execute(pool) .await?; if result.rows_affected() == 1 { Ok(Some(result.last_insert_id() as i32)) } else { Ok(None) } } i fckn love this syntax so much, its so much fun
ur not using sqlx power
21:35
use the macro
Avatar
Avatar
Ryozuki
ur not using sqlx power
10€ and i might
21:36
justatest
Avatar
also u use ?
21:36
use psql directly
21:36
oh wait is it mysql
Avatar
use mongodb
21:36
it's webscale
Avatar
use the sqlx::query! macro
21:36
for compile time checked queries
Avatar
Avatar
Ryozuki
use the sqlx::query! macro
What would be the benefit in my usecase tho ?
Avatar
u know ur query is valid
21:39
xd
Avatar
if the query is malformed it will fail to compile
Avatar
Im checking the query values during the Initial request tho
Avatar
ok but do u want to investigate when u make a typo
21:40
or do u want the compiler to do it for you
Avatar
I dont do typos feelsbadman
Exported 450 message(s)