Repository: pytorch
Issue: torch.fx.Tracer.record_stack_traces is broken in torch 2.4.0
Labels: good first issue,oncall: export

### 🐛 Describe the bug

`torch.fx.Tracer` has a `record_stack_traces` member. It does not give the correct stack trace, starting with torch  2.4 RC.

I am not sure it is part of the external API, but it was nice to have. The following is working in 2.3, but broken in 2.4RC


```python
import torch.fx
class M1(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.linear = torch.nn.Linear(1, 1)
    def forward(self, x):
        return x + self.linear(x)
class M2(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.m1 = M1()
    def forward(self, x):
        return x + self.m1(x)
m = M2()
tracer = torch.fx.Tracer()
tracer.record_stack_traces=True
graph = tracer.trace(m)
sym=torch.fx.GraphModule(m,graph)
print(sym.print_readable())
assert 'code: return x + self.linear(x)' in sym.print_readable()
assert 'code: return x + self.m1(x)' in sym.print_readable()
```

It was broken in this PR: https://github.com/pytorch/pytorch/pull/121449/ where you stopped using the find_user_frame (or an equivalent function) to filter non user stack traces.

Something along these lines can be probably used as a fix:

```python
    def create_proxy(self, kind, target,args, kwargs, name, type_expr = None, proxy_factory_fn = None):
....
     if self.record_stack_traces and not proxy.node.stack_trace:
            proxy.node.stack_trace = _find_user_frame2_4(''.join(CapturedTraceback.extract().format()))


    def _find_user_frame2_4(self, stack_trace):
        stack_trace=stack_trace.split('\n')
        if 'torch/fx/proxy.py' in stack_trace[-3]:
            stack_trace=stack_trace[:-1]
            while len(stack_trace)>2 and '/fx/' in stack_trace[-2]:
                stack_trace=stack_trace[:-2]
        return '\n'.join(stack_trace)
```

Notes:
- I am not sure why you don't see the effect in `torch.export.export`.
- `torch.export.unflatten` looses stack trace for collapsed modules.

### Versions

PyTorch version: 2.4.0+cu121
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A

OS: Ubuntu 22.04.3 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Clang version: Could not collect
CMake version: version 3.29.2
Libc version: glibc-2.35

Python version: 3.10.6 (main, Aug 30 2022, 16:00:07) [GCC 7.5.0] (64-bit runtime)
Python platform: Linux-5.15.0-101-generic-x86_64-with-glibc2.35
Is CUDA available: False
CUDA runtime version: 12.2.91
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: 
GPU 0: NVIDIA A100-PCIE-40GB
GPU 1: NVIDIA A100-PCIE-40GB

Nvidia driver version: 550.54.14
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      43 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             64
On-line CPU(s) list:                0-63
Vendor ID:                          AuthenticAMD
Model name:                         AMD EPYC 7502 32-Core Processor
CPU family:                         23
Model:                              49
Thread(s) per core:                 2
Core(s) per socket:                 32
Socket(s):                          1
Stepping:                           0
BogoMIPS:                           4999.98
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd amd_ppin arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip rdpid overflow_recov succor smca sme sev sev_es
Virtualization:                     AMD-V
L1d cache:                          1 MiB (32 instances)
L1i cache:                          1 MiB (32 instances)
L2 cache:                           16 MiB (32 instances)
L3 cache:                           128 MiB (8 instances)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-63
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Mitigation; untrained return thunk; SMT enabled with STIBP protection
Vulnerability Spec rstack overflow: Mitigation; safe RET
Vulnerability Spec store bypass:    Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines, IBPB conditional, STIBP always-on, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected

Versions of relevant libraries:
[pip3] mypy==1.10.0
[pip3] mypy-extensions==1.0.0
[pip3] numpy==1.26.4
[pip3] pytorch-lightning==2.2.4
[pip3] torch==2.4.0+cu121
[pip3] torchaudio==2.4.0+cu121
[pip3] torchmetrics==1.3.2
[pip3] torchvision==0.19.0+cu121
[pip3] triton==3.0.0
[conda] No relevant packages

cc @avikchaudhuri @gmagogsfm @zhxchen17 @tugsbayasgalan @angelayi @suo @ydwu4 @penguinwu